728x90

https://programmers.co.kr/learn/courses/30/lessons/68935

출처 : 프로그래머스

 

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

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

programmers.co.kr


def solution(n):
    answer = 0
    tmp = []
    
    while True:
        tmp.append(n % 3)
        n //= 3
        if n == 0:
            break       
            
    idx = 0  
    for t in tmp[::-1]:
        if t == 0:
            idx += 1
            continue
        answer += t*(3**idx)
        idx += 1
        
    return answer

풀이

3으로 나눈 나머지로 3진법을 구하는 방법으로 구했다.

하지만 다른 사람 풀이를 보고 놀랐다..ㅋ ㅋ ...

def solution(n):
    tmp = ''
    
    while True:
        tmp += str(n % 3)
        n //= 3
        if n == 0:
            break
            
    answer = int(tmp,3)
    return answer

풀이

int('문자열', 진법)

솔직히 int가 이런 옵션이 있는줄 몰랐다.

앞으로 진법문제 나올 때 유용하게 쓰자.

+ Recent posts