Python - 3진법 뒤집기

Minseok Jeon·2024년 6월 28일

문제

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

제한사항

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

입출력 예

nresult
457
125229
입출력 예 설명

입출력 예 #1

  • 답을 도출하는 과정은 다음과 같습니다.
n (10진법)n (3진법)앞뒤 반전(3진법)10진법으로 표현
45120000217

따라서 7을 return 해야 합니다.

입출력 예 #2

  • 답을 도출하는 과정은 다음과 같습니다.
n (10진법)n (3진법)앞뒤 반전(3진법)10진법으로 표현
1251112222111229

따라서 229를 return 해야 합니다.

문제 풀이

def solution(n):
	answer = ''
    while n > 0:
    	n, m = divmode(n, 3) # n을 3으로 나눈 몫과 나머지
        answer += str(m)
    return int(answer, 3)
  • 사용된 함수
    divmod() : 두 개의 수를 대상으로 // 연산자와 % 연산자를 각각 호출하는 것

int(x, base) : base 진법으로 구성된 str 형식의 수를 10진법으로 변환해 줌

코드 설명

while n > 0:
	n, m = divmode(n, 3)
    answer += str(m)
  • divmode() 함수를 사용해 변수 n과 m에 n을 3으로 나눈 몫과 나머지를 넣어준다.
  • 변수 answer에 divmod()한 나머지 값을 차례로 넣어준다.
    -> ex) n = 45 -> answer = '0021'
return int(answer, 3)
  • int(x, base) 함수를 사용해 3진수인 answer를 10진수로 변환해 반환해준다.

0개의 댓글