Skip to content

Latest commit

 

History

History
48 lines (35 loc) · 1.62 KB

File metadata and controls

48 lines (35 loc) · 1.62 KB

🦨 LeetCode 171. Excel Sheet Column Number

  • Date : 2021.08.08(일)
  • Time : 20분

Problem

  • Given a string columnTitle that represents the 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 
    ...
    

Constraints

  • 1 <= columnTitle.length <= 7
  • columnTitle consists only of uppercase English letters.
  • columnTitle is in the range ["A", "FXSHRXW"].

Example

  • Input: columnTitle = "ZY"
  • Output: 701



풀이

    def titleToNumber(self, columnTitle: str) -> int:
        sum = 0
        for i in range(len(columnTitle)):
            sum = (sum * 26) + ord(columnTitle[i]) - 64
            print(i, sum)
        return sum

: 이 문제는 만약 알파벳이 두개 이상이라면, 첫번째 알파벳까지의 위치를 먼저 도달한 후 그 다음 알파벳까지 한 단계?(여기서 생각하는 한 단계란 하나의 A~Z의 묶음)를 넘어서 이동해야하는 것이다. 만약에 첫번째 알파벳일 때는 sum = 0 이기 때문에 아무 단계를 거치지 않아도된다. 그래서 문자를 ord를 통해 유니코드 값을 추출한 후에 64를 빼주면 그 값이 나온다. 만약 두번째 알파벳이라면 sum = 1이기 때문에 그 알파벳에 대한 단계를 더해줘야한다. A_ 인 단계는 26개이고 B_인 단계도 26개이다. 그래서 만약 Z_를 구하고싶다면 A_ ~ Y_ 단계를 모두 거치고 와야하기 때문에 *26을 해주는 것이다(이 부분이 이해하는데 좀 걸렸다).