뚜당탕탕

[프로그래머스 / Python] 3진법 뒤집기 본문

💯 문제 풀이/프로그래머스

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

뚜띠언니 2021. 10. 29. 00:49

👇 문제 설명

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


제한사항

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

입출력 예

n result
45 7
125 229

입출력 예 설명

입출력 예 #1

  • 답을 도출하는 과정은 다음과 같습니다.

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

45 1200 0021 7
  • 따라서 7을 return 해야 합니다.

입출력 예 #2

  • 답을 도출하는 과정은 다음과 같습니다.

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

125 11122 22111 229
  • 따라서 229를 return 해야 합니다.

 

👇 문제 풀이

def solution(n):
    answer = 0
    tmp = []
    three = ''
    
    while (n > 0) :
        tmp.append( (n % 3) ) 
        n = n // 3
    
    for s in tmp :
        three += str(s)
    
    i = 0
    for s in reversed(three) :
        answer += (int(s) * (3**i) )
        i +=1
    
    return answer

처음에 이렇게 풀었는데,

3진법으로 변환할 때, 바로 string 타입으로 저장하면 반복문을 한 번 줄일 수 있게 된다.

👇 이렇게

def solution(n):
    answer = 0
    three = ''
    
    while (n > 0) :
        three += str(n % 3)
        n = n // 3
    
    i = 0
    for s in reversed(three) :
        answer += (int(s) * (3**i) )
        i +=1
    
    return answer

오늘은 여기까지~

Comments