[문제]
2309번: 일곱 난쟁이
아홉 개의 줄에 걸쳐 난쟁이들의 키가 주어진다. 주어지는 키는 100을 넘지 않는 자연수이며, 아홉 난쟁이의 키는 모두 다르며, 가능한 정답이 여러 가지인 경우에는 아무거나 출력한다.
www.acmicpc.net
[코드]
import java.io.*
fun main() {
val br = BufferedReader(InputStreamReader(System.`in`))
val bw = BufferedWriter(OutputStreamWriter(System.out))
val list = mutableListOf<Int>()
val arr = Array(100){ 0 }
for(i in 0..8) {
val a = br.readLine().toInt()
list.add(a)
arr[a] = i
}
val sum = list.sum()
val array = Array(9) { i -> sum-list[i] }
val result = mutableListOf<Int>()
for(i in 0..8){
if(arr[array[i]-100] > 0 ) {
for (j in 0..8) {
if (j != i && j != arr[array[i] - 100])
result.add(list[j])
}
break
}
}
result.sort()
result.forEach{
bw.write("$it\n")
}
bw.flush()
bw.close()
}
[풀이]
배열에 난쟁이의 키를 인덱스로 하여 난쟁이 순서 값을 저장하고
List에는 순서대로 난쟁이 키만 저장하였다.
난쟁이 키의 총합에서 각 순서에 맞게 키 값을 뺀 값을 새로운 배열에 저장하고
새로운 배열에서 각각 100을 뺀 값이 처음 배열의 인덱스로 하여 그 배열값이 0보다 크면 해당하는 값이 있다는 뜻이기 때문에 해당하는 수들을 결과 list에 저장하여 정렬 후 출력하였다.
Github : https://github.com/eshc123/2021AlgorithmStudy/blob/main/src/main/PS/baekjoon/2309.kt
'Algorithm and PS > 백준(Kotlin)' 카테고리의 다른 글
| 백준 - 11328 Strfry (코틀린) (0) | 2021.05.15 |
|---|---|
| 백준 - 2577 숫자의 개수 (코틀린) (0) | 2021.05.11 |
| 백준 - 2562 최댓값 (코틀린) (0) | 2021.05.10 |
| 백준 - 10871 A+B (코틀린) (0) | 2021.05.07 |
| 백준 - 1000 A+B (코틀린) (0) | 2021.05.05 |
댓글