Solution

Memo

  • 그냥 간단한 조합 구현 문제
  • cpp는 특징적인건 없고 그냥 재귀로 했다.
fun List<Int>.findLottoCombinations(result: MutableList<Int> = mutableListOf(), index: Int = 0) {
    if (result.size == 6) {
        println(result.joinToString(" "))
        return
    }

    if (result.size + (size - index) < 6) return

    for (i in index until size) {
        result.add(this[i])
        findLottoCombinations(result, i + 1)
        result.removeAt(result.lastIndex)
    }
}

fun main() = with(BufferedReader(InputStreamReader(System.`in`))) {
    generateSequence { readLine() }
        .takeWhile { it != "0" }
        .forEach { line ->
            val numbers = line.split(" ").map { it.toInt() }
            numbers.drop(1).findLottoCombinations()
            println()
        }
}
  • 확장함수로 구현해두면 코드가 예뻐지는 것 같다.