본문 바로가기
Python3/프로그래머스

2022.06.01 [프로그래머스] (python 파이썬) 3진법 뒤집기

by ian's coding 2022. 6. 1.
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

 


풀이

우선 10진법인 n을 3진법으로 바꾸기 위해 while문을 통해 3진법으로 바꿔주었다.

여기서 num3에 저장했는데 저장된 값은 3진법의 역순으로 저장되게 된다.

그래서 여기서 바꾸지 않고 바로 역순이 된 3진법을 10진법으로 바꿔주었다.

45로 예를 들면 3진법은 1200이고 뒤집으면 0021이 된다.

이 수를 다시 10진법으로 바꾸기 위해서 0*(3^3)+0*(3^2)+2*(3^1)+1*(3^0)을 해주면 된다.

그래서 우선 지수를 len(num3)-1로 초기값을 주고 num3를 for문으로 돌면서 위의 계산을 수행했다.

 

1
2
3
4
5
6
7
8
9
10
11
12
13
def solution(n):
    answer = 0
    num3=[]
    while n>0:
        a=n%3
        num3.append(a)
        n=n//3
    
    n=len(num3)-1
    for i in range(len(num3)):
        answer+=(3**n)*num3[i]
        n-=1
    return answer
cs

 

 

 

728x90
반응형

댓글