[프로그래머스 Python] Lv 1. 3진법 뒤집기
문제 설명
자연수 n이 매개변수로 주어집니다. n을 3진법 상에서 앞뒤로 뒤집은 후, 이를 다시 10진법으로 표현한 수를 return 하도록 solution 함수를 완성해주세요.
제한사항
- n은 1 이상 100,000,000 이하인 자연수입니다.
- 👉 문제 보러가기
문제 풀이
(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 함수를 사용했다(이전 진법은 두 번째 인수로 전달하면 됨).
👩🏻💻개인 공부 기록용 블로그입니다
오류나 틀린 부분이 있을 경우 댓글 혹은 메일로 따끔하게 지적해주시면 감사하겠습니다.
댓글남기기