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함수를 이용하면 원소를 리턴함을 하고 제거까지 해준다