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

서준·2023년 6월 15일
0

프로그래머스 Lv.1

목록 보기
25/35

1. 문제

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

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

2. 풀이

1차 시도(성공)

def solution(n):
    three_list = []
    answer = 0
    # 3진수 구해서 list에 하나씩 추가
    while (n >= 3):
        three_list.append(n%3)
        n = n//3
    # MSB 추가
    three_list.append(n)
    # 3진수를 10진법으로 표현
    for i in range(0, len(three_list)):
        # 뒤에서 부터 곱해가야 하기때문
        answer += (3**i)*three_list[-(i+1)]
    return answer
  • ''.join(list) 쓰는 방법을 알 수 있었다.

3. Lv.up

  1. ''.join(list) 할때 list에는 str값이 들어가야한다. 만약 int값이라면 map(int, list)해주면 된다.

4. Ref.

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

    answer = int(tmp, 3)
    return answer
  • int('111', 2) 이렇게 쓰면 111을 이진법으로 생각하고, 10진수로 바꾼다는 뜻!
profile
어린이입니다.

0개의 댓글