728x90
<문제 링크>
https://programmers.co.kr/learn/courses/30/lessons/68935
<문제 풀이>
1. 정수를 3진법으로 구하고 그 값의 앞뒤를 반전시키고 [::-1] 다시 10진법으로 표현한다.
<코드>
def solution(n):
answer = ''
i=1
three = [1]
answer2 = 0
while 3**i<=n:
three.append(3**i)
i += 1
for i in three[::-1]:
tmp = 0
while i<=n:
n -= i
tmp += 1
answer += str(tmp)
for idx, i in enumerate(answer):
answer2 += int(i) * (3**idx)
return answer2
<고쳐야 할 점>
- n==3일 때 주의.. 3진법으로 10이므로, 앞뒤 반전하면 01이므로 답은 1이다.
- 복습 알고리즘
'두두의 알고리즘 > 문제' 카테고리의 다른 글
[탐욕법] 프로그래머스 L1 '신규 아이디 추천' (Python) (0) | 2022.03.20 |
---|---|
[기타] 프로그래머스 L1 '키패드 누르기' (Python) (0) | 2022.03.20 |
[순열과 조합] 프로그래머스 L1 '두 개 뽑아서 더하기' (Python) (0) | 2022.03.20 |
[탐욕법] 프로그래머스 L1 '최소직사각형' (Python) (0) | 2022.03.20 |
[구현] 프로그래머스 L1 '다트 게임' (Python) (0) | 2022.03.20 |