코딩테스트

[leetcode] 168. Excel Sheet Column Title

nayoon 2025. 3. 1. 11:47

문제

171. Excel Sheet Column Number 와 풀이가 반대되는 문제이다.

 

A -> 1

B -> 2

..

Z -> 26

AA -> 27

..

 

위와 같이 주어졌을 때, 입력 숫자와 상응하는 문자열을 반환한다.

 

풀이

n이 자릿수이고, A를 A~Z에 해당하는 숫자(1~26)라고 했을 때, 26으로 나눠가며 나머지부터 알파벳으로 바꿔간다.

 

풀이 코드

위의 풀이를 그대로 코드로 옮겨온 모습이다.

class Solution {
    public String convertToTitle(int columnNumber) {
        StringBuilder sb = new StringBuilder();

        while(columnNumber > 0) {
            columnNumber--;
            sb.insert(0, (char)(columnNumber % 26 + 'A'));
            columnNumber /= 26;
        }

        return sb.toString();
    }
}

 

그나마 체크할 부분이라고 한다면 아래 두 가지를 이야기할 수 있다.

1. columnNumber--

2. (char)(coloumNumber % 26 + 'A')

 

1번과 2번은 서로 연관되어있는 부분인데

char로 변환할 때 'A'를 더해서 원하는 알파벳을 구하고 싶다면 columnNumber에 1을 빼줘야한다.

 

A ~ Z가 1 ~ 26에 해당하기 때문에 1을 빼줘야한다.

 

저렇게 빼면 전체적인 값 계산에 문제가 되지 않을까 의문이 생길 수도 있는데, 26을 반복적으로 나눠가며 나머지는 제외하고 몫으로 계산하고 있기 때문에 크게 문제는 없다.