티스토리 뷰
알고리즘
[leetcode] 168. Excel Sheet Column Title / python ord 함수 / python chr 함수
Redirect 2024. 1. 17. 17:13728x90
728x90
문제 설명
Given an integer columnNumber, return its corresponding column title as it appears in an Excel sheet.
For example:
A -> 1
B -> 2
C -> 3
...
Z -> 26
AA -> 27
AB -> 28
...
Example 1:
Input: columnNumber = 1
Output: "A"
Example 2:
Input: columnNumber = 28
Output: "AB"
Example 3:
Input: columnNumber = 701
Output: "ZY"
나는 처음에 주어진 숫자를 나눠서 리스트에 보관하면서 진행할 예정으로 코드를 짰다.
class Solution:
def convertToTitle(self, columnNumber: int) -> str:
alpha = ['A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z']
answer = []
if columnNumber > 26:
answer.append(columnNumber%26-1)
answer.insert(0,columnNumber//26)
print(answer)
while True:
number = answer.pop(0)
if columnNumber%26 == 0 and number < 28:
answer.insert(0,number%26-2)
break
elif number < 27:
answer.insert(0,number%26-1)
break
else :
answer.insert(0,number%26-1)
answer.insert(0,number//26)
print(answer)
else:
answer.append(columnNumber%26-1)
coo = ''
for a in answer:
coo = coo + alpha[a]
return coo
하지만 어디선가 꼬인 코드로 테스트케이스 13번 부터 통과하지 못했다. 테스트케이스를 계속 하나하나 통과하면서 코드를 고치는 것은 올바른 방법이 아니라고 생각해서 틀렸다 생각하고 풀이 중 괜찮은 것 같은 풀이를 봤다.
class Solution(object):
def convertToTitle(self, columnNumber):
output = ""
while columnNumber > 0:
# ord() 함수를 사용해서 A를 유니코드로 변환하고 나머지만큼 더해준다.
# 그리고 더한 값을 chr() 함수를 이용해서 다시 문자로 반환한다.
output = chr(ord('A') + (columnNumber - 1) % 26) + output
# 우리는 A에서 시작을 했기 때문에 1을 빼고 계산해야한다.
# 1을 빼고 나눈 몫을 다시 columnNumber 에 대입
columnNumber = (columnNumber - 1) // 26
return output
해당 풀이는 문제의 알파벳을 순서대로 나열하고 순서를 맞추는 것에 중요한 포인트를 두었다.
chr 함수와 ord 함수를 사용해서 계산했다.
ord(문자)
하나의 문자를 인자로 받고 해당 문자에 해당하는 유니코드 정수를 반환
예) ord('a')를 넣으면 정수 97을 반환
chr(정수)
하나의 정수를 인자로 받고 해당 정수에 해당하는 유니코드 문자를 반환
(인자(정수)의 유효 범위는 0 ~ 1,114,111 (16진수 0x10 FFFF)까지 이다)
예) chr(97)을 하면 문자 'a'를 반환
728x90
'알고리즘' 카테고리의 다른 글
[프로그래머스] 전화번호 목록 (0) | 2024.03.08 |
---|---|
[프로그래머스] 완주하지 못한 선수 (0) | 2024.03.05 |
[백준][Python] 암호 만들기 (0) | 2022.07.21 |
[백준][Python] 단어 수학 (0) | 2022.07.19 |
[프로그래머스][Python] 카카오 신규 아이디 추천 (+정규식을 이용한 풀이) (0) | 2022.05.04 |
300x250
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크