[문제]
자연수 n이 매개변수로 주어집니다. n을 3진법 상에서 앞뒤로 뒤집은 후, 이를 다시 10진법으로 표현한 수를 return 하도록 solution 함수를 완성해주세요.
[풀이]
먼저 10진법에서 3진법으로 변환하는 과정을 살펴보자.
123 ÷ 3 = 41 나머지 0
41 ÷ 3 = 13 나머지 2
13 ÷ 3 = 4 나머지 1
4 ÷ 3 = 1 나머지 1
1 ÷ 3 = 0 나머지 1
몫이 0이 되었다면 나머지 부분을 아래서 위로(역순으로) 읽어준다.
123을 3진법으로 변환하면 11120이 된다.
이를 이용해서 n을 3진법으로 변환해준 뒤 문제서 요구한대로 뒤집어주면 되는데
뒤집을 필요없이 나머지를 구하는 과정에서 역순이 아닌 원래 순서대로 연결하면 뒤집힌 모양이 된다.
이를 다시 10진법을 변환해서 리턴한다. 이는 int 함수로 손쉽게 할 수 있다.
def solution(n):
base3 = ''
while n != 0:
base3 += str(n % 3)
n //= 3
base10 = int(base3, 3)
return base10
'코딩 테스트 > Python' 카테고리의 다른 글
삼총사 (0) | 2024.12.16 |
---|---|
이상한 문자 만들기 (0) | 2024.12.15 |
최대공약수와 최소공배수 (0) | 2024.12.15 |
행렬의 덧셈 (0) | 2024.12.15 |
부족한 금액 계산하기 (0) | 2024.12.15 |