Algorithm

[프로그래머스] 3진법 뒤집기 (Python)

salmon16 2021. 2. 14. 19:17

출처 : 코딩테스트 연습 - 3진법 뒤집기 | 프로그래머스 (programmers.co.kr)

 

코딩테스트 연습 - 3진법 뒤집기

자연수 n이 매개변수로 주어집니다. n을 3진법 상에서 앞뒤로 뒤집은 후, 이를 다시 10진법으로 표현한 수를 return 하도록 solution 함수를 완성해주세요. 제한사항 n은 1 이상 100,000,000 이하인 자연수

programmers.co.kr

풀이 방법

십진법으로 표현된 수를 3진법으로 바꾸는 방법은 십진법 수를 3으로 몫이 0이 될 때까지 나눠가며 나머지를 큐에 넣은 후 하나씩 빼면 3진법으로 바꿀 수 있다. 

문제에서 삼진법으로 만든 후 뒤집은 후 다시 십진법으로 만들어야 하므로 큐가 아닌 처음부터 스택에 나머지를

넣은 후 pop 을 해준후 다시 십진법으로 만들면 정답이 된다

def solution(n):
    answer = 0
    stack = []
    while not (n / 3 == 0):
        stack.append(n % 3)
        n = n // 3
    cnt = 1
    while len(stack):
        answer += cnt * stack.pop()
        cnt *= 3
        
    return answer

문법

파이썬에서는 c++과 다르게 stack의 pop함수를 이용하면 원소를 리턴함을 하고 제거까지 해준다