[프로그래머스] Lv2 - 124 나라의 숫자

김멉덥·2023년 8월 30일
0

알고리즘 공부

목록 보기
89/171
post-thumbnail
post-custom-banner

문제

프로그래머스 연습문제


코드 구현

def solution(n):
    answer = ''

    list_124 = [1, 2, 4]

    while(n > 0):       # 3진법 이용하기
        answer += str(list_124[(n % 3) - 1])
        n = (n - 1) // 3

    answer = "".join(reversed(answer))      # 오른쪽에서 밀어넣어서 만든 답이니 거꾸로 한번 뒤집어줘야함

    return answer

풀이

  • 3진법으로 해석해보면 0, 1, 2 가 반복되는데 여기서 0은 4와 같다 !
    나누어 떨어지면 0 → 이게 124 나라에선 4 로 바뀌어야함
  • 정답 요소는 (n - 1) % 3 한 값의 인덱스로 결정된다.
    • 나머지가 1이면 → 1 - 1 = 0 → 0번째 인덱스인 1
    • 나머지가 2이면 → 2 - 1 = 1 → 1번째 인덱스인 2
    • 나머지가 0이면 → 0 - 1 = -1 → -1번째 인덱스인 4
  • 이걸 반복하는 횟수는 즉 자릿수와 같은데 이는 (n - 1) // 3 을 해주면서 결정된다.
    • n = 9 라면, 정답이 2자리 수이므로 while문을 2번은 돌아야함
      • (9 - 1) // 3 = 2 → (2 - 1) // 3 = 0 → 2번 돌게됨
    • n = 13 이라면, 정답이 3자리 수이므로 while문을 3번 돌아야함
      • (13 - 1) // 3 = 4 → (4 - 1) // 3 = 1 → (1 - 1) // 3 = 0 → 3번 돌게됨

profile
데굴데굴 뚝딱뚝딱 개발기록
post-custom-banner

0개의 댓글