[프로그래머스] Lv.1 3진법 뒤집기 (Python)

seulzzang·2022년 9월 13일
0

코딩테스트 연습

목록 보기
7/44

📍문제

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

📍풀이

  • 45를 3진법으로 변환하면 1200인데, 우리는 뒤집은 3진법이 필요하다.
  • 근데 그냥 파이썬으로 3진법 나타내주려고 하다보면 뒤의 값부터 저장이 된다. (3으로 나눈 나머지가 필요한데, 큰 수 부터 나눠가기 때문에 그림처럼 0부터 저장됨)
    그래서 이 값들을 result 리스트에 담아준다.
  • 이 후 그냥 sum에 3진법을 계산한 답들을 더해주었다.

💻코드

def solution(n):
    answer = 0
    result = []
    sum = 0
    while n:
        a, b = divmod(n, 3)
        result.append(b)
        n = n//3
    
    for i in range(len(result)):
        # 0, 1, 2, 3
        sum += ((3**(len(result)-i-1))*result[i])
    
    answer = sum
    return answer

생각해보니 divmod를 사용할 필요 없이 걍 n%3을 저장해 주면 되는구나..;;

📍다른사람 풀이

def solution(n):
    tmp = ''
    while n:
        tmp += str(n % 3)
        n = n // 3

    answer = int(tmp, 3)
    return answer

int가 쓰였길래 뭐지? 하고 찾아보니
int('숫자(혹은 16진법의 문자와 같은 문자)로 이루어진 문자열',해당 진법)이라고 한다.
바로 10진법 수로 계산해주는 것..;; 세상에 이런 용도가 있는지 처음 알았다;
해당 코드에서 int(tmp, 3)tmp문자열을 3진법으로 변환해 준다는 것이다.
나처럼 sum += ((3**(len(result)-i-1))*result[i]) 이렇게 3진법을 직접 계산해줄 필요가 없음..

profile
중요한 것은 꺾이지 않는 마음

0개의 댓글