본문 바로가기

알고리즘/LeetCode

[JAVA] LeetCode 171 - Excel Sheet Column Number

Given a column title as appear in an Excel sheet, return its corresponding column number.

엑셀 시트에 나타나는 열 타이틀이 주어지면, 해당 열의 번호를 반환하라.

 

 

Example 1:Input: "A" Output: 1

Example 2: Input: "AB" Output: 28

Example 3: Input: "ZY" Output: 701

 

 

풀이 방법

예제로 주어진 Input과 Output을 분석해보면, 각 문자의 인덱스 별 열 번호를 공식을 만들 수 있다.

나의 경우, 26^(문자열의 길이 - 현재 문자의 인덱스) * (현재 문자의 번호) 라는 공식을 만들었고,

현재 문자의 번호는 char 타입의 문자(아스키 코드)에서 - 64를 하여 고유 번호를 얻도록 하였다.

 

1. 문자열을 한 글자씩 잘라서 열 번호를 구한다.

2. 위 공식으로 나온 값을 결과 값에 합산한다.

3. Math.round 함수로 반올림한 결과 값을 반환한다.

 

class Solution {
    public int titleToNumber(String s) {
        double res = 0;
        for(int i=1; i<=s.length(); i++) {
            char c = s.charAt(i-1);
            res += Math.pow(26, s.length()-i) * (c-64);
        }
        return (int)(Math.round(res));
    }
}