반응형

백준 2309번 일곱 난쟁이 문제입니다. (solved.ac)기준 브론즈 1 문제입니다.

https://www.acmicpc.net/problem/2309

 

2309번: 일곱 난쟁이

아홉 개의 줄에 걸쳐 난쟁이들의 키가 주어진다. 주어지는 키는 100을 넘지 않는 자연수이며, 아홉 난쟁이의 키는 모두 다르며, 가능한 정답이 여러 가지인 경우에는 아무거나 출력한다.

www.acmicpc.net

문제

문제 접근

총 9개의 난쟁의 키가 주어지고 그 중 7개를 골라 100이 되도록 하면 되는 문제입니다.

기본적으로 9개의 키를 모두 더하고 9가지 중 2가지를 골라 키의 합에서 빼주었을 때 100이 되는 경우를 찾아 오름차순으로 정렬 후 출력하도록 했습니다. 9C2라고 생각하면 될 것 같습니다.

정답 코드

removeAt() 을 사용

fun main() {

    var nineDwarf = mutableListOf<Int>()

    repeat(9) {
        nineDwarf.add(readln().toInt())
    }

    var sum = nineDwarf.sum()
    for (fir in 0..8) {
        for (sec in fir + 1..8) {
            if (sum - (nineDwarf[fir] + nineDwarf[sec]) == 100) {
                nineDwarf.removeAt(sec)
                nineDwarf.removeAt(fir)
                nineDwarf.sorted().forEach {
                    println(it)
                }
                return
            }
        }
    }
}

새로운 mutableList를 만들어서 출력.

fun main() {

    var nineDwarf = mutableListOf<Int>()
    var originDwarf = mutableListOf<Int>()

    repeat(9) {
        nineDwarf.add(readln().toInt())
    }
    var sum = nineDwarf.sum()
    for (fir in 0..8) {
        for (sec in fir + 1..8) {
            if (sum - (nineDwarf[fir] + nineDwarf[sec]) == 100) {
                nineDwarf.forEach {
                    if (it != nineDwarf[fir] && it != nineDwarf[sec]) {
                        originDwarf.add(it)
                    }
                }
                originDwarf.sorted().forEach {
                    println(it)
                }
                return
            }
        }
    }
}
반응형
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기