본문 바로가기
코딩 공부

Leetcode 171. Excel Sheet Column Number 파이썬

by 카우보이연구소 2022. 2. 23.

요즘에는 개발자들이 회사에 취업하기 위해서 사용한다는 리트코드 (leetcode) 사이트의 문제들을 풀어보고 있습니다. 이제 막 시작한 초보자라 힘든 점이 많아서 이렇게 글로 남겨서 복습하려고 합니다.

 

문제: 171. Excel Sheet Column Number
등급: Easy

내용: Excel Sheet Column Number, AAA, A, BC, 이런 column을 숫자로 변환해서 반환해라.

 

<코드>

class Solution(object):
    def titleToNumber(self, columnTitle):
        # ord(A) =65
        # add up to the answer
        column_number = 0
        
        # go through the string
        i = 1
        for letter in columnTitle[::-1]:
            # ord(letter) - 64 will give the number we want
            number_represented = ord(letter) - 64
            if i != 1:
                # then have it power to the i
                number_to_add = number_represented * (26**(i-1))
            else:
                number_to_add = number_represented
            # and add it to the column_number
            column_number += number_to_add
            # also add 1 to i as it progresses
            i += 1
        
        return column_number
        
        """
        :type columnTitle: str
        :rtype: int
        """

<논리>

더 좋은 코드도 있을 것 같지만, 일단 간단한 코드이다. ASCII를 활용해서 A에서 Z의 숫자를 우선 구할수 있었다.

 

그리고는, string을 for loop으로 돌림으로써 그 숫자가 어디있느냐에 따라 맞는 수, 즉 26^n으로 곱해서 총 값에 더해줬다.

<조금 개선된 코드>

class Solution(object):
    def titleToNumber(self, columnTitle):
        # ord(A) =65
        # add up to the answer
        column_number = 0
        
        # go through the string
        i = 1
        for letter in columnTitle[::-1]:
            # ord(letter) - 64 will give the number we want
            number_represented = ord(letter) - 64
            # then have it power to the i
            number_to_add = number_represented * (26**(i-1))
            # and add it to the column_number
            column_number += number_to_add
            # also add 1 to i as it progresses
            i += 1
        
        return column_number
        
        """
        :type columnTitle: str
        :rtype: int
        """

중간에 불필요한 if statement를 없앴다.

 

<총평>

 

Happy coding!

 

댓글0