[프로그래머스 Lv2] 124 나라의 숫자 (파이썬)

Jewon Joel Park·2022년 6월 8일
0

Programmers-solution

목록 보기
16/34

문제 링크


문제 설명

숫자 1/2/4만 사용하는 나라에서 사용할 수 있도록 자연수 n을 변환하는 함수 작성


풀이 코드

def solution(n):
    answer = ''
    while n > 0:
        n, m = divmod(n, 3)
        answer = "124"[m-1] + answer
        if m == 0:
            n -= 1
    return answer

코드 설명

cf) 처음 3진법으로 변환하는 방법을 떠올리고 나서 한참을 고민했던 코드인데, 3으로 나누어 떨어지는 수에서 몫에 해당하는 값이 자꾸 더해지는 현상이 생겼었다.
열받아서 그냥 나머지가 0일 때 나눠야 하는 수를 1 빼버렸는데, 정상적으로 동작해서 당황했던 코드.

  1. 숫자가 1/2/4로 움직이는 것이 3진법에서 0/1/2만 사용하는 것과 유사한 원리일 것으로 추정
  2. 나눠야 하는 수n이 0 이상일 때까지 순환하는 while Loop 안에서 n값을 3으로 나눈 몫으로 업데이트하고 나머지를 m에 저장
  3. 문자열 "124"에서 나머지보다 1 작은 수를 인덱스로 하는 값을, 반환할 문자열 answer의 앞에 더하여 저장
  4. 진법에 0이 포함되지 않으므로 나머지가 0일 때 n값을 -1하여 몫을 하나 뺄 수 있도록 함
profile
10년을 돌고 돌아 마침내 제자리를 찾은 문과 출신 Python 개발자의 인생기록장

0개의 댓글