본문 바로가기

CodingTest/Programmers

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

/  제출 1  /

def solution(n):
    answer = 0
    div = n
    result = []
    while n >= 1:
        rem = n%3
        result.append(rem)
        n = n//3
    print(result)
    for i in range(len(result)):
        mul = len(result)-1-i
        print(result[i],'*',3**mul)
        answer += result[i]*(3**mul)
채점 결과
정확성: 100.0
합계: 100.0 / 100.0
 
반성 포인트
1. 3진법 개념이 낯설어서 검색을 해야해 풀이 시간이 조금 걸렸습니다. 진법 개념은 익숙하게 익히고 갑시다.
2. 파이썬 기초문법도 아직 헷갈릴 때가 있습니다. 마지막에 제곱 계산을 할 깨 3**mul 로 한다는 걸 3^mul로 해서 print디버깅을 해야 했습니다. 와우.. 제출 시에 디버깅 코드를 같이 내는 실수도 했네요. 반성합시다..
 

[ 다른 분들 풀이 ]
 
1)
def solution(n):
    tmp = ''
    while n:
        tmp += str(n % 3)
        n = n // 3

    answer = int(tmp, 3)
    return answer

 

와 int에 저런 기능이 있는 걸 몰랐습니다. int( x, num) 을 넣어주면 num진법의 x를 10진법의 수로 바꿔줄 수 있네요.