[프로그래머스 / Level 1] 3진법 뒤집기 (파이썬)

khyojun·2022년 7월 28일
0

코테연습

목록 보기
13/21
post-thumbnail

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

📌제한 사항

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

📌 Solution
3진법을 뒤집는다는것 오히려 좋았다. 나머지 처리만 계속 해주면서 그 값들에 대해서 다시 10진법으로 변환만 해주면 되었다.

def solution(n):
    answer = 0
    three=[]
    while True:
        if n<3:
            three.append(n)
            break
        three.append(n%3)
        n=n//3
    
    cnt_three=1
    leng=len(three)
    for i in range(len(three)-1, -1, -1):
        answer+=cnt_three*three[i]
        cnt_three*=3
        
    return answer
    

그러나 위의 경우보다 더 효율적으로 문제를 해결할 수 있는 방법이 있었다.
바로 int형 변환을 활용하여 바로 3진법을 10진법의 수로 바꿔주면 되었었다.


def solution(n):
    tmp = ''
    while n:
        tmp += str(n % 3)
        n = n // 3

    answer = int(tmp, 3)
    return answer

문제 해결하며 알게 된 점

  1. int(형변환 할것, 몇 진법? 인지)
profile
코드를 씹고 뜯고 맛보고 즐기는 것을 지향하는 개발자가 되고 싶습니다

0개의 댓글