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
...
Input: "A"
Output: 1
Input: "AB"
Output: 28
Input: "ZY"
Output: 701
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문을 사용하지 않고 알파벳에 해당하는 값을 구했다까지만 구현한듯 싶다.
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문 안쓰고 한 건 거의 처음 아닐까 싶다..^^
수학 계산만 잘하면 되는 쉬운 문제같음