[프로그래머스] 3진법 뒤집기 (Python)

Suyeon Pi·2021년 10월 28일
0

Algorithm

목록 보기
4/5

https://programmers.co.kr/learn/courses/30/lessons/68935

문제설명

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

제한사항

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

입출력 예 설명

n (10진법)n (3진법)앞뒤 반전 (3진법)10진법으로 표현
45120000217

n (10진법)n (3진법)앞뒤 반전 (3진법)10진법으로 표현
1251112222111229

문제풀이

def solution(n):
    answer = ''
    
    while(n >= 1):
        rest = n % 3
        n = n // 3
        answer += str(rest)
    
    return int(answer, 3)

print(solution(45))
  • n // 3 -> n을 3으로 나눈 몫
  • n % 3 -> n을 3으로 나눈 나머지
  • n 을 나누고 나머지를 answer에 순서대로 넣음
  • 순서대로 넣으면 앞뒤 반전 한 것과 같음
  • n이 1이 될때까지 계속 나눔
  • int(n, base)를 통해 base진법을 10진법으로 변환

다른 풀이

def solution(n):
    answer = ''

    while n >= 0:			
        n, re = divmod(n,3)	
        answer += str(re)
    return int(answer, 3)
  • divmod()함수를 통해 몫과 나머지를 구할 수 있음 (2개의 값 리턴)
profile
Stay hungry, Stay foolish!

0개의 댓글