반응형

백준 7568번 문제입니다. (solved.ac)기준 실버 5 문제입니다.

문제

문제 접근

사람의 수(cnt)를 입력 받고 cnt만큼 반복해서 키, 몸무게 데이터를 입력받을 것 입니다.

키 몸무게 데이터는

var input = readlnOrNull()!!.split(" ")
var size = Size(input[0].toInt(), input[1].toInt())

위와 같은 형식으로 입력받았는데 input에 공백으로 나누어 문자를 넣어주고 공백으로 나뉜 문자들을 각 정수형으로 변경하고 Size타입으로 만들어주었습니다.

(키, 몸무게) 형식으로 한 쌍의 값이 담길 데이터 클래스를 Size로 만들고 Size타입의 mutableList를 만들어 사람들의 키, 몸무게 데이터를 입력받도록 하였습니다. 

입력 받은 사람의 수만큼의 몸무게, 키 데이터를 입력 받았다면 2중으로 forEach구문을 사용하여 mutableList내의 다른 사람들의 몸무게, 키 데이터와 비교하여 순위를 매기게 됩니다. 기본 순위는 1이며 현재 데이터의 몸무게와 키 모두 비교대상의 몸무게, 키보다 작다면 순위를 1단계 올려주도록 하였습니다.

정답 코드

// 몸무게, 키 / 한 쌍의 값을 담을 데이터 클래스
data class Size(var weight : Int, var height : Int)

fun main(){

    // 전체 사람의 수(cnt)
    var cnt = readlnOrNull()!!.toInt()
    // Size 데이터타입의 mutableList
    var sizeList = mutableListOf<Size>()

    // cnt 횟수만큼 반복해서 키, 몸무게 데이터를 입력받음.
    for(no in 1 .. cnt){
        var input = readlnOrNull()!!.split(" ")
        var size = Size(input[0].toInt(), input[1].toInt())
        sizeList.add(size)
    }

    // 각 데이터를 비교하여 순위를 매김.
    sizeList.forEach{
        cnt = 1
        sizeList.forEach { compared ->
            if (it.weight < compared.weight && it.height < compared.height){
                cnt++
            }
        }
        print("${cnt} ")
    }

}
반응형
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기