[프로그래머스] 3진법 뒤집기 - 파이썬

송승우·2023년 10월 20일
0

Coding Test

목록 보기
29/35

문제 설명


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


제한 사항


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

입출력 예


nreturn
457
125229

입출력 예 설명


입출력 예 #1

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

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

입출력 예 #2

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

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


solution.py


def solution(n):
    answer = 0
    list_result = []
    # n이 3보다 크거나 같을 동안 계속 리스트에 나머지를 넣는다.
    while n >= 3:
        list_result.append(int(n % 3))
        n = int(n / 3) 
    # 마지막에 몫에 해당하는 부분도 넣는다.
    list_result.append(n)  
    # 리스트에 들어있는 부분을 10진법으로 바꿔준다.    
    for i in range(len(list_result)):
        answer += list_result[i] * 3**(len(list_result)-(i+1))
        
    return answer

파이썬의 int() 함수에는 바꾸고 싶은 진법을 파라미터로 전달해주면 해당 진법으로 문자열을 바꿔주는 기능이 있다.

def solution(n):
    answer = 0
    tmp =''
    
    while n >= 3:
        tmp += str(n % 3)
        n = int(n / 3) 
    
    tmp += str(n)  
        
    answer = int(tmp, 3)
        
    return answer
profile
아무것도 하기 싫어요..

0개의 댓글