요즘에는 개발자들이 회사에 취업하기 위해서 사용한다는 리트코드 (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!
'코딩 공부' 카테고리의 다른 글
Leetcode 200. Number of Islands (0) | 2022.02.28 |
---|---|
Leetcode 441. Arranging Coins - 파이썬 (0) | 2022.02.20 |
Leetcode 258. Add Digits - Python (0) | 2022.02.13 |
Leetcode 27. Remove Element Python (0) | 2022.02.11 |
댓글