문제 출처:https://leetcode.com/problems/excel-sheet-column-title/
문제 분석
이 문제는 Excel sheet의 column number를 구하는 문제입니다. 예제를 보면 다음과 같이 표현되는 것을 알 수 있습니다.
1 -> A, 2 -> B, ... 26 -> Z, 27 -> AA
주어진 인풋의 size가 ${2^{31}-1}$이기 때문에 문자열을 계속 연장할 수 있어야합니다. 문자는 1~26의 숫자로 판단하며 이는 columnNumber를 26으로 나눈 나머지이기도 합니다. 하지만 문자는 0~25의 숫자를 가지는 것이 아니기 때문에 1을 나머지 계산을 수월하게 하기 위해서 값에 ${n-1 / 26}$과 같이 활용했습니다.
또한 새로 붙는 문자의 위치가 뒤가 아닌 앞으로 붙어야하기 때문에 다음과 같이 코드를 구현했습니다.
코드는 다음과 같습니다:
class Solution {
public:
string convertToTitle(int columnNumber) {
string answer = "" ;
for(; 0 != columnNumber ; columnNumber = (columnNumber-1) / 26)
answer.insert(0, 1, 'A' + (columnNumber-1) % 26) ;
return answer ;
}
};
해당 문제는 Github에서도 보실 수 있습니다:
https://github.com/gurcks8989/CodingTest/blob/master/LeetCode/P168_Excel_Sheet_Column_Title.cpp
훈수 및 조언은 언제든 환영입니다.