반응형
백준 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} ")
}
}
반응형
'알고리즘 문제풀이[Algorithm]' 카테고리의 다른 글
[백준] 1966번 프린터 큐(Kotlin - 코틀린) (0) | 2022.04.24 |
---|---|
[백준] 10826 피보나치 수 4(BigInteger)(Kotlin - 코틀린) (0) | 2022.04.22 |
[백준] 4386번 별자리 만들기(크루스칼 알고리즘)(Python - 파이썬) (0) | 2022.03.11 |
[백준] 1922번 네트워크 연결(크루스칼 알고리즘)(Kruskal Algorithm)(Python - 파이썬) (0) | 2022.03.09 |
[백준] 1717번 집합의 표현(서로소 집합 자료구조)(Union-Find)(Python-파이썬) (0) | 2022.03.08 |
최근댓글