Problem
Excel 의 행이 문자열로 주어지면 몇 번째 행인지 계산하는 문제입니다.
Solution
문자열 뒤에서부터 계산해도 되는데 저는 앞에서부터 했습니다.
ABZ
라는 문자열을 받았다고 가정합니다.
수식으로 변경하면 다음과 같습니다.
(A * 26 * 26) + (B * 26) + Z
*26 을 밖으로 빼서 정리해서 다시 수식을 표현할 수 있습니다.
(((A * 26) + B) * 26) + Z
위 수식을 바탕으로 for 문을 돌립니다.
- 시작 값은 0 이다.
- 26 을 곱한다.
- 문자를 더한다.
Java Code
class Solution {
public int titleToNumber(String s) {
int ret = 0;
for (char c : s.toCharArray()) {
ret *= 26;
ret += c - 64;
}
return ret;
}
}
Kotlin Code
class Solution {
fun titleToNumber(s: String): Int {
return s.toCharArray().fold(0) { total, num -> total * 26 + num.toInt() - 64 }
}
}
'알고리즘 문제 > LeetCode' 카테고리의 다른 글
[LeetCode Easy] Reverse String (Java, Kotlin) (0) | 2020.11.10 |
---|---|
[LeetCode Easy] Majority Element (Java, Kotlin) (1) | 2020.10.31 |
[LeetCode Easy] Convert Sorted Array to Binary Search Tree (Java, Kotlin) (0) | 2020.10.21 |
[LeetCode Medium] Target Sum (Java) (0) | 2020.09.05 |
[LeetCode Medium] Partition Labels (Java) (0) | 2020.09.05 |