📌 LeetCode [168]: Excel Sheet Column Title
🔗 문제 링크
문제 설명 📄
Excel 시트의 열 번호가 주어졌을 때, 이를 열 제목(A, B, ..., Z, AA, AB, ...)으로 변환하는 문제입니다.
열 제목은 대문자 알파벳으로 구성되며, 열 번호는 1부터 시작합니다.
Solution 💻
class Solution:
def convertToTitle(self, columnNumber: int) -> str:
alpha = [chr(i) for i in range(65, 91)]
answer = []
while columnNumber > 0:
columnNumber -= 1
value = columnNumber % 26
answer.append(alpha[value])
columnNumber //= 26
return "".join(reversed(answer))
시간 복잡도 분석 ⏲️
- 시간 복잡도:
O(log26(columnNumber))
- 열 번호를 26으로 나누는 연산을 수행하므로, 반복 횟수는 열 번호의 크기에 따라 대략
log26(columnNumber)
입니다.
- 열 번호를 26으로 나누는 연산을 수행하므로, 반복 횟수는 열 번호의 크기에 따라 대략
- 공간 복잡도:
O(log26(columnNumber))
- 변환된 문자들을 저장하는 리스트의 크기와 비례합니다.
리팩토링 🛠️
개선된 코드
class Solution:
def convertToTitle(self, columnNumber: int) -> str:
answer = []
while columnNumber > 0:
columnNumber -= 1
answer.append(chr(columnNumber % 26 + 65))
columnNumber //= 26
return "".join(reversed(answer))
리팩토링 후 시간 복잡도 ⏲️
- 시간 복잡도:
O(log26(columnNumber))
- 기존 코드와 동일.
- 공간 복잡도:
O(log26(columnNumber))
- 리스트 크기와 비례하며, 동일.
'알고리즘' 카테고리의 다른 글
LeetCode [733]: Flood Fill (0) | 2024.12.20 |
---|---|
LeetCode [1791]: Find Center of Star Graph (0) | 2024.12.20 |
LeetCode [228]: Summary Ranges (0) | 2024.12.20 |
LeetCode [703]: Kth Largest Element in a Stream (0) | 2024.12.20 |
LeetCode [766]: Toeplitz Matrix (0) | 2024.12.20 |