[leetcode-C] 171. Excel Sheet Column Number

shsh·2020년 11월 25일
0

leetcode

목록 보기
5/161

171. Excel Sheet Column Number - C

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

For example:

    A -> 1
    B -> 2
    C -> 3
    ...
    Z -> 26
    AA -> 27
    AB -> 28 
    ...

Example 1:

Input: "A"
Output: 1

Example 2:

Input: "AB"
Output: 28

Example 3:

Input: "ZY"
Output: 701

Answer 1: Wrong Answer (702 / 1000 test cases passed.)

int titleToNumber(char * s){
    int i, j;
    int lastIdx = strlen(s)-1;
    int result = 0;
    
    for(i=0;i<strlen(s);i++)
    {
        if(i == strlen(s)-1)
        {
            result += (s[i] - 'A' + 1);
        }
        else
        {
            result += (s[i] - 'A' + 1) * 26 * (i+1);
        }
    }
    
    return result;
}

맨처음 구상했던 건 두자리의 case까지만 가능했음
왜 저따구로 생각했는진 모르겠지만..
자릿수 계산을 제대로 안하고 그냥 막 제출한 코드
switch문을 사용하지 않고 알파벳에 해당하는 값을 구했다까지만 구현한듯 싶다.

Answer 2: Accepted

int titleToNumber(char * s){
    int i;
    int result = 0;
    
    for(i=0;i<strlen(s);i++)
    {
        result += pow(26, strlen(s) - 1 - i) * (s[i] - 'A' + 1);
    }
    
    return result;
}

최초로 혼자 힘으로 Runtime 0 ms 달성 !!
한자리일 때, 두자리일 때, 세자리일 때 ... 케이스들을 생각하며 자릿수 계산함

규칙은 [26의 (length - i)승] [알파벳의 값] 을 갖는다는 것
=> 'pow(26, strlen(s) - 1 - i)
(s[i] - 'A' + 1)' 를 의미

이중 for문 안쓰고 한 건 거의 처음 아닐까 싶다..^^

수학 계산만 잘하면 되는 쉬운 문제같음

profile
Hello, World!

0개의 댓글

관련 채용 정보