Notice
Recent Posts
Recent Comments
Link
«   2025/03   »
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 31
Tags
more
Archives
Today
Total
관리 메뉴

MyPrograming

프로그래머스-파이썬 (3진법 뒤집기) 본문

Python/알고리즘

프로그래머스-파이썬 (3진법 뒤집기)

SeongWon 2021. 2. 7. 13:24
반응형

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

 

<제한사항>

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

<입출력 예시>

 

n result
45 7
125 229

 

<입출력 예시 설명>

 

입출력 예시 #1

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

 

입출력 예시 #2

n (10진법) n (3진법) 앞뒤 반전 (3진법) 10진법 표현
125 11122 22111 229

 

 


<내 풀이>

 

def solution(n):
    answer = 0
    ternary = ''
    
    while(n >=1):
        rest = n % 3
        n //= 3
        ternary = str(rest)+ternary
    
    for i in range(len(ternary)):
        answer += (3**i)*int(ternary[i])
    
    return answer

입력물 n을 3진법으로 변환하고 다시 10진법으로 변환하는 밑의 반복문에서, ternary 앞 순서의 인덱스부터 접근하기 

때문에, 뒤집은 것과 같은 결과를 얻을 수 있다.

 

 

다른 풀이

 

def solution(n):
    answer = 0
    ternary = ''
    
    while(n >=1):
        rest = n % 3
        n = n//3
        ternary += str(rest)
    
    answer = int(ternary, 3)
    
    return answer

3진법으로 변환한 결과를 뒤집어서 ternary에 담았을 때, 그 결과를 다시 10진법으로 변환하기 위한 간단한 방법이 있다.

 

answer = int(ternary, 3)
  • int(n, y) : 'y' 진법으로 표현된 'n'을 10진법으로 변환해준다.
반응형