본문 바로가기

자료구조 & 알고리즘 & cs/CodingTest

프로그래머스 LEVEL1 - 3진법 뒤집기

▶ 문제 설명

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

▶ 제한사항

  • n은 1 이상 100,000,000 이하인 자연수입니다.

▶ 입출력 예

n                                                                                               result

45 7
125 229

▶ 내가 짠 코드

def solution(n):
    answer = ''

    while n > 0:			
        n, mod = divmod(n,3)
        answer += str(mod)
    
    return int(answer, 3)

십진법으로 변환하는 과정에서 굳이 뒤집을 필요가 없으므로 그대로 사용한다.

처음에는 나머지를 이어붙인 문자열을  for문을 돌려서 10의 제곱수를 곱해주려고 했는데

int(x,base) 를 사용하면 간단하게 해결할 수 있었다.

base 진법의 str 형식의 수를 10진법으로 변환해주기 때문에 굳이 뒤집거나 할 필요가 없다.

▶ 참고사항

- divmod() : 몫과 나머지를 같이 구할 수 있다. 주의할 점은 작은 숫자를 다룰 때는 몫과 나머지를 각각 구하는 것보다 느리다는 것. 큰 숫자를 구할 때는 훨씬 빠르다. 코드 스타일에 따라 정해서 쓰는 것이 좋다.

728x90