Python/CoTe
[programmers] 3진법 뒤집기
joannekim0420
2022. 3. 3. 15:01
728x90
https://programmers.co.kr/learn/courses/30/lessons/68935
코딩테스트 연습 - 3진법 뒤집기
자연수 n이 매개변수로 주어집니다. n을 3진법 상에서 앞뒤로 뒤집은 후, 이를 다시 10진법으로 표현한 수를 return 하도록 solution 함수를 완성해주세요. 제한사항 n은 1 이상 100,000,000 이하인 자연수
programmers.co.kr
※ 3진법 구하는 방법 ※
n을 3진법으로 바꾼다고 하면,
n이 3으로 나누어 떨어질 때까지 나누면서 나머지를 챙긴다.
예를 들어, 45를 3진법으로 표현하면,
45/3 = 15 (나머지 0)
15/3 = 5 (나머지 0)
5/3 = 1 (나머지 2)
마지막에 3으로 나눈 몫과 나머지들을 쭉 연결 시켜,
1200이 된다.
3진법을 구하는 것을 while문으로 반복시켜 얻는다.
def solution(n):
list_ = []
answer =0
if n < 3:
return n
while n//3>0:
list_.append(n%3)
if n//3<3:
list_.append(n//3)
break
n = n//3
for i in range(len(list_)-1):
answer+= 3**(len(list_)-i-1)*list_[i]
return answer+list_[-1]