https://www.acmicpc.net/problem/2309
2309번: 일곱 난쟁이
아홉 개의 줄에 걸쳐 난쟁이들의 키가 주어진다. 주어지는 키는 100을 넘지 않는 자연수이며, 아홉 난쟁이의 키는 모두 다르며, 가능한 정답이 여러 가지인 경우에는 아무거나 출력한다.
www.acmicpc.net
더보기

이 문제의 속성은 브루트 포스 알고리즘이다.
근데 이걸.. 7명을 무식하게 매칭할 필요 없고.. 9명 중 두 명을 빼버리면 7명이 남으니까.. 그 남은 7명을 더하면 되는 간단한 문제이다.
fun main(args: Array<String>) {
question2309()
}
fun question2309() {
val array = Array(9) { 0 }
for (i in 1 .. 9) {
val person = readln().toInt()
array[i - 1] = person
}
bigLoop@ for(i in 0 ..< array.count()) {
for(j in 0 ..< array.count()) {
// i와 j가 같으면 한 사람을 빼는 것과 같음
if(i != j) {
val copyList = array.copyOf()
// 제외된 사람의 키를 0으로 만들어 합에서 제한다.
copyList[i] = 0
copyList[j] = 0
if(copyList.sum() == 100) {
println(
// 리스트에서 0의 키를 제외하고 출력함
copyList.sorted().toList()
.mapNotNull { if(it == 0) null else it }
.joinToString("\n")
)
break@bigLoop
}
}
}
}
}

반응형
'스터디(beakjoon)' 카테고리의 다른 글
Kotlin] 백준 17427번 풀이 (0) | 2024.04.24 |
---|---|
Kotlin] 백준 1748번 문제 풀이 (0) | 2024.04.23 |
Kotlin] 백준 17425번 풀이 (0) | 2024.04.22 |
Kotlin] 백준 4375번 풀이 (0) | 2024.04.18 |
Kotiln] 백준 9084번 풀이 (1) | 2024.04.17 |