Programmers_124나라의 숫자

Kyungtaek Oh·2022년 2월 3일
0

[Programmers] Problems

목록 보기
19/66

124 나라의 숫자

Link: https://programmers.co.kr/learn/courses/30/lessons/12899

문제 설명

124 나라가 있습니다. 124 나라에서는 10진법이 아닌 다음과 같은 자신들만의 규칙으로 수를 표현합니다.

124 나라에는 자연수만 존재합니다.
124 나라에는 모든 수를 표현할 때 1, 2, 4만 사용합니다.
예를 들어서 124 나라에서 사용하는 숫자는 다음과 같이 변환됩니다.

자연수 n이 매개변수로 주어질 때, n을 124 나라에서 사용하는 숫자로 바꾼 값을 return 하도록 solution 함수를 완성해 주세요.

제한사항

  • n은 500,000,000이하의 자연수 입니다.

입출력 예

n result

1 1
2 2
3 4
4 11

Code / Python

def solution(n):
    answer = ''
    #사전정의 
    dic_ = {1:'1', 2:'2', 3:'4'}

    Q = n//3 #몫은 Q에 저장
    R = n % 3 #나머지는 R에 저장

    #만약 1과 2처럼 몫이 0일때, 정답에 나머지값 저장
    if Q == 0:
        answer = dic_[R] + answer

    #몫이 0보다 클때, while문을 반복해서 돌면서 수행
    while Q > 0:
        R = n%3 
        
        #만약 나머지 값이 0이라면 나머지 값을 3으로 저장하고 몫을 1 줄인다.
        if R == 0:
            R = 3
            Q = (n//3) -1
        else:
            Q = n//3
        
        #뒤에서 부터 저장할 것이기 때문에, 계속해서 몫을 나누고 나온 나머지 값을 앞으로 저장.
        answer = dic_[R] + answer
        n = Q

    return answer

코드 풀이

  1. dictionary에 {1:'1', 2:'2', 3:'4'} 저장한다.
  2. 만약 1과 2처럼 몫이 0일때, 정답에 나머지값 저장한다.
  3. 몫이 0보다 클때, while문을 반복해서 돌면서 수행한다. 나머지를 저장하면서 정답을 구할것인데, 만약 나머지가 1이나 2라면 그대로 저장하면 되지만 0이라면 '4'를 저장하면 된다. 몫이 0이 될때까지 반복한다.

Output / Screenshot

더 나은 코드

def change124(n):
    num = ['1','2','4']
    answer = ""

    while n > 0:
        n -= 1
        answer = num[n % 3] + answer
        n //= 3

    return answer
    
*출처: 프로그래머스 정답들 중
profile
Studying for Data Analysis, Data Engineering & Data Science

0개의 댓글

관련 채용 정보