문제 설명

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

제한사항


문제 풀이

(1) Pseudo-Code

  • 10진법인 n을 3진법의 수로 표현한다(뒤집어야 함).
  • 3진법으로 표현한 수를 다시 10진법으로 변환한다.

(2) 코드 작성

def solution(n):
    base = ''
    while n > 0:
        n, mod = divmod(n, 3)
        base += str(mod)
    return int(base, 3)

(3) 코드 리뷰

  • 10진법의 수를 3진법의 수로 표현하려면 n을 3으로 나누어서 몫이 0이 될 때까지 연산될 수 있도록 while문을 사용했다.
  • python의 내장 함수인 divmod를 사용해서 몫과 나머지를 한번에 n, mod 변수에 담아주었다.
    • 만약 풀어서 쓴다면, n, mod = divmod(n, 3) 대신 n = n//3, mod = n%3 를 작성하면 된다.
    • 하지만 순서는 mod를 먼저 작성해야한다(몫을 먼저 저장하면 나머지를 구할 때 변경된 몫으로 계산하게 됨)
  • 3진법으로 변경한 수를 뒤집기 처리해주어야 3진법 수가 되지만, 문제가 3진법으로 바꾼 후 앞뒤를 뒤집으라고 해서 따로 뒤집는 과정을 추가하지 않았다.
  • n진법 수를 10진법 수로 변환하기 위해 int 함수를 사용했다(이전 진법은 두 번째 인수로 전달하면 됨).


👩🏻‍💻개인 공부 기록용 블로그입니다
오류나 틀린 부분이 있을 경우 댓글 혹은 메일로 따끔하게 지적해주시면 감사하겠습니다.

댓글남기기