Coding Test/프로그래머스

[LEVEL 1] 3진법 뒤집기 - Python

크라슐라 2022. 9. 13. 23:59

3진법 뒤집기

 

1. 문제 설명

 

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

 

2. 제한사항

 

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

 

3. 답안

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
def solution(n):
 
    # n을 3진법으로 변환한 수를 앞뒤로 뒤집어 각 자릿수를 저장할 리스트 tenary_list 초기화
    ternary_list = []
 
    # while 반복문을 통해 ternary_list에 3진법으로 변환한 수를 저장
    while n:
        ternary_list.append(n % 3)
        n = n // 3
 
    # 결과 값을 저장할 변수 answer 초기화
    answer = 0
 
    # for 반복문을 통해 10진법으로 변환한 결과를 변수 answer에 저장
    for index, ternary in enumerate(ternary_list):
        answer += ternary * 3 ** (len(ternary_list) - index - 1)
 
    # 결과 값 반환
    return answer

 

4. 해설

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
def another_solution(n):
 
    # n을 3진법으로 변환한 수를 거꾸로 저장할 문자열 temp 초기화
    temp = ""
 
   # while 반복문을 통해 temp에 3진법으로 변환한 수를 저장
    while n:
        temp += str(n % 3)
        n = n // 3
 
    # int() 함수를 통해 문자열 temp를 10진법으로 변환한 결과를 변수 answer에 저장
    answer = int(temp, 3)
 
    # 결과 값 반환
    return answer