슬기로운 연구생활

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

슬기로운 코테 생활

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

vhrehfdl 2020. 10. 30. 10:02

* 문제

programmers.co.kr/learn/courses/30/lessons/68935#

 

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

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

programmers.co.kr

 

* 문제 풀이 

- 첫째, 반복문을 사용해 10진수를 3진수로 변환한다.

- 둘째, 리스트 형태로 받은 3진수를 reverse 한다.

- 셋째, 반복문을 사용해 다시 10진수로 바꾼다. 

 

* 생각

- 10진법과 3진법의 구현 원리만 알면 간단하게 풀 수 있는 문제이다.

- 10진법 -> 3진법을 할 때는 3의 나머지 값을 순차적으로 입력받으면 된다.

- 3진법 -> 10진법으로 바꿀 때는 3의 N승 한 후 3진법 값이랑 곱하면 된다.

 

* 코드 

def solution(n):
    three_list = []
    while n >= 3:
        num = int(n % 3)
        three_list.append(num)
        n = n / 3
    
    num = int(n % 3)
    three_list.append(num)
    three_list.reverse()
    
    answer = 0
    for i in range(0, len(three_list)):
        answer += (3**i)*three_list[i]
        
    return answer

 

Comments