문제
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을 반복적으로 나눠가며 나머지는 제외하고 몫으로 계산하고 있기 때문에 크게 문제는 없다.
'코딩테스트' 카테고리의 다른 글
[leetcode] 202. Happy Number (0) | 2025.03.01 |
---|---|
[leetcode] 11. Container With Most Water (0) | 2025.01.15 |
4. Median of Two Sorted Arrays (0) | 2024.09.01 |
[leetcode] 1657. Determine if Two Strings Are Close (0) | 2024.08.24 |
[leetcode] 80. Remove Duplicates from Sorted Array II (0) | 2024.08.03 |