[ LeetCode ] 171 Excel Sheet Column Number

codesver·2023년 7월 11일
0

LeetCode

목록 보기
22/24
post-thumbnail

📌 Problem

168번 문제를 거꾸로 해석하는 문제이다. 하나의 알파벳 대문자 문자열이 주어졌을 때 여기에 대응되는 값을 반환하면 된다.

📌 Solution

해결 방법은 매우 간단하다. 26진수라고 생각하고 풀면 된다. 다만, 0을 나타내는 값이 없으며 1 ~ 26이 A ~ Z으로 대응된다. GAS라는 문자열이 주어지면 거꾸로 S부터 계산하면 된다. S는 1의 자리수 이기 때문에 260S26^0 * S으로 해석할 수 있으며 S는 19이다. A는 26의 자리수이기 때문에 26 * 1로 26이다. G는 26 x 26의 자리수이기 때문에 26 x 26 x 7으로 4732가 된다. 3 숫자를 모두 더하면 4777이 된다.

📌 Code

Code는 2가지 방법으로 나뉜다.
첫 번째 방법은 조금 더 깔끔한 방법이다.

class Solution {
    fun titleToNumber(columnTitle: String) = columnTitle.reversed().mapIndexed { i, c ->
        (26.0).pow(i).toInt().times(c.toInt() - 64)
    }.sum()
}

다만, 이 방법은 문자열을 뒤집는 연산이 필요하다. 이를 해결하기 위한 조금 더 빠른 방법이 다음과 같다.

class Solution {
    fun titleToNumber(title: String) = title.indices.map { i ->
        (26.0).pow(i).toInt().times(title[title.length - i - 1].toInt() - 64)
    }.sum()
}
profile
Hello, Devs!

0개의 댓글