Notice
Recent Posts
Recent Comments
Link
«   2024/09   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30
Tags
more
Archives
Today
Total
관리 메뉴

NY's 개발일기

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

Study/Algorithm

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

developer_ny 2020. 12. 28. 01:14

문제 설명

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

제한사항

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

입출력 예

n result
45 7
125 229

즉,

n (10진법) n (3진법) 앞뒤 반전 (3진법) 10진법으로 표현
45 1200 0021 7

다음과 같은 순서로 답을 도출해내는 문제입니다.

 

필자의 경우, 해당 문제를 조금 복잡하게 풀었는데

해당 문제를 간단하게 풀어낸 좋은 코드를 발견하여 이를 기록하고자 합니다.

def solution(n):
    answer = 0
    arr = []
    while True:
        arr.append(str(n % 3))
        n = n//3
        if n == 0:
            break
    answer = ''.join(arr)
    answer = int(answer, 3)
    return answer

print(solution(45))

먼저, while문의 경우 10진법으로 표현된 n을 3진법으로 변환해주는 코드인데

먼저 나온 나머지 값부터 arr 리스트에 순서대로 넣어주기 때문에

앞뒤 반전된 3진법 값이 arr 리스트에 들어가게 됩니다.

 

int(answer, 3)의 경우 해당 값을 10진법으로 변환해주는 코드입니다.