본문 바로가기
알고리즘/프로그래머스 PS

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

by 빛밤하늘 2021. 7. 16.
반응형

밑의 링크는 프로그래머스에서의 문제 링크입니다.

 

코딩테스트 연습 - 3진법 뒤집기

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

programmers.co.kr

 

 

 

 

 

 

 

 

파이썬 코드와 결과입니다.

# 자연수 n이 매개변수로 주어집니다.
# n은 1 이상 100,000,000 이하인 자연수입니다.
def solution(n):
    # 정답을 저장할 변수를 선언합니다.
    answer = ''

    # n이 3보다 크거나 같은 경우, 계속 반복합니다.
    while n >= 3:
        # n을 3으로 나누고 나온 나머지를 문자열로 변환하고 answer에 넣어줍니다.
        answer += str(n % 3)
        # n을 3으로 나눈 몫을 다시 n에 저장합니다.
        n //= 3

        # n이 3보다 작다면
        if n < 3:
            # n을 문자열로 변환하고 answer에 넣어줍니다.
            answer += str(n)
    # 이 반복문을 거치고 나면 answer에는 n을 3진수로 변환하고 뒤집은 상태의 값이 저장됩니다.
    
    # 매개변수로 주어진 n이 3보다 작아서 answer가 빈 문자열인 상태라면
    if answer == '':
        # answer에 n 그대로 문자열로 변환하고 저장합니다. 
        answer = str(n)

    # 3진법 형태의 수를 문자열로 저장하고 있는 answer의 값을 3진법으로 10진법으로 변환합니다. 
    answer = int(answer, base=3)

    # answer의 값을 반환합니다.
    return answer

결과

 

 

 

※ 궁금한 부분, 이상한 점 및 오타는 댓글에 부탁드립니다.

※ 더 효율적이고 빠른 정답을 환영합니다.

반응형

댓글