본문 바로가기
  • 개발하는 곰돌이
Algorithm/BOJ

[Kotlin] 백준 2757 : 엑셀

by 개발하는 곰돌이 2023. 1. 9.

문제 링크

 

2757번: 엑셀

입력은 여러 줄이며, RnCm형태이다. n은 행 번호 (1<=n<=300000000), m은 열 번호 (1<=m<=300000000) 이다. 입력의 마지막은 n과 m이 모두 0이며, 이때는 출력하지 않고 프로그램을 종료하면 된다.

www.acmicpc.net



문제 해설

RnCm 형태의 셀 번호가 주어졌을 때 알파벳 + 행 번호 형태로 변환하는 문제이다. 행 번호는 그냥 사용하면 되기 때문에 열 번호만 변환해주면 된다.

 

열 번호는 26진수로 변환한다고 생각하면 수월하게 해결할 수 있다. 열 번호를 26으로 나누면서 A~Z에 매칭시키고 그 결과를 뒤집어서 행 번호와 함께 출력하면 된다.


Code

fun main() = with(System.`in`.bufferedReader()) {
    val bw = System.out.bufferedWriter()
    var RC: List<String>
    while (readLine().also { RC = it.split('R', 'C') } != "R0C0") {
        val r = RC[1].toInt()
        var c = RC[2].toInt()
        val sb = StringBuilder()
        while (c > 0) {
            c--
            sb.append('A' + c % 26)
            c /= 26
        }
        bw.write("${sb.reverse()}$r\n")
    }
    bw.close()
}

댓글