본문 바로가기

old/Algorithm Solving

LeetCode 171. Excel Sheet Column Number 자바 문제 풀이

반응형

문제

Excel Sheet Column Number - LeetCode

문제 해결 방법

  • A~Z를 1~26 만드는 것은 쉽습니다. A는 아스키코드로 65이므로, 64 나 ‘@’를 뺴거나, 혹은 ‘A’+1을 한다면 숫자로 출력이 됩니다. 아래 링크를 참조.

10진수 아스키 코드 표

JAVA에서 char타입 사칙연산은 어떻게 작동할까?

  • 자리수에 따라서 추가되는것을 고려하는것이 필요합니다.
  • ZY=Z26 + Y = 2626 + 25 = 676 + 25 = 701 이므로, 뒷자리에서 부터 계산하면 자리수에 필요한 수를 얻을수 있습니다.
  • 계산식 (자리수가 1이상일떄) 알파벳수 * 26^자리수

Github Link

https://github.com/eunhanlee/LeetCode_171_ExcelSheetColumnNumber_Solution.git

시간복잡도: O(n), 공간복잡도: O(1)

class Solution {
    /**
     * 주어진 열 제목을 해당하는 열 번호로 변환합니다.
     *
     * @param columnTitle 변환할 열 제목
     * @return 열 번호
     */
    public int titleToNumber(String columnTitle) {
        char[] titleList = columnTitle.toCharArray();
        int result = 0; // 최종 결과값
        int power = 1; // 26의 거듭제곱을 계산하기 위한 변수

        for (int i = columnTitle.length() - 1; i > -1; i--) {
            int value = titleList[i] - '@'; // 현재 문자에 해당하는 숫자 값 계산
            result += value * power; // 현재 자리의 값을 결과에 더함
            power *= 26; // 다음 자리의 26의 거듭제곱 값을 계산하기 위해 power를 업데이트
        }

        return result; // 최종 결과 반환
    }
}
반응형