[백준] 이진법 시계 (2704)(kotlin)

문제 설명

백준 2704번 문제 링크

입력 및 출력

» 입력

  • 첫 줄에 테스트 케이스의 수 N이 주어진다. (1<=N<=1000) 각 케이스마다 10진법에서의 시간, 분, 초로 나타낸 시각이 한 줄에 예제의 형식과 같이 주어진다.

» 출력

각 테스트 케이스마다, 3열 방식으로 읽은 이진법 시계의 시각과 3행 방식으로 읽은 이진법 시계의 시각을 공백으로 구분하여 출력한다. 각각 18개의 비트를 가져야 한다.

예제 입출력(테스트케이스)

입력 출력
2
10:37:49
00:00:01
011001100010100011 001010100101110001
000000000000000001 000000000000000001

문제 풀이1

fun main(args: Array<String>) = with(System.`in`.bufferedReader()) {
    repeat(readLine().toInt()) {
        val clock = readLine().split(":").map { it.toInt().to6bitString() }
        val bClock = Array(3) { b ->
             IntArray(6) {
                 clock[b][it] - '0'
             }
        }

        var r6h3 = ""
        var r3h6 = ""

        for (i in 0 until 6) for (j in 0 until 3) {
            r6h3 += bClock[j][i]
        }

        for (i in 0 until 3) for (j in 0 until 6) {
            r3h6 += bClock[i][j]
        }

        println("$r6h3 $r3h6")
    }
}

fun Int.to6bitString(): String = Integer.toBinaryString(this).padStart(6, '0')