Coding Test

[Kotlin] 백준 - 1475번 방번호

SeungYong.Lee 2024. 9. 7. 16:00
반응형

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

[문제]

다솜이는 은진이의 옆집에 새로 이사 왔다. 다솜이는 자기 방 번호를 예쁜 플라스틱 숫자로 문에 붙이려고 한다.

다솜이의 옆집에서는 플라스틱 숫자를 한 세트로 판다. 한 세트에는 0번부터 9번까지 숫자가 하나씩 들어있다. 다솜이의 방 번호가 주어졌을 때, 필요한 세트의 개수의 최솟값을 출력하시오. (6은 9를 뒤집어서 이용할 수 있고, 9는 6을 뒤집어서 이용할 수 있다.)

첫째 줄에 다솜이의 방 번호 N이 주어진다. N은 1,000,000보다 작거나 같은 자연수이다.

첫째 줄에 필요한 세트의 개수를 출력한다.

 

[입출력 예]

 

[풀이]

각 숫자의 몇 번 나왔는지를 체크하여 가장 많이 나오는 수의 횟수를 구해주면 됩니다.
단, 여기서 6과 9는 서로 뒤집어서 사용이 가능하므로 짝수 횟수일 경우에 대한 중복 처리에 주의해야 합니다.

fun roomNumber() {
    val n = readln()
    val count = IntArray(10)

    for (ch in n) {
        val num = ch.digitToInt()
        count[num]++
    }

    // 6과 9는 합쳐서 사용 가능하므로 6과 9의 빈도를 합침
    val sixNineCount = count[6] + count[9]
    count[6] = sixNineCount / 2 + sixNineCount % 2
    count[9] = 0

    // 가장 많이 필요한 숫자의 개수를 반환
    println(count.maxOrNull() ?: 0)
}

6과 9는 빈도를 합쳐서 2로 나누어줍니다. 하지만 홀수일 경우를 대비하여 나머지 값 또한 더해주도록 합니다.

반응형