문제 설명
124 나라가 있습니다. 124 나라에서는 10진법이 아닌 다음과 같은 자신들만의 규칙으로 수를 표현합니다.
-
124 나라에는 자연수만 존재합니다.
-
124 나라에는 모든 수를 표현할 때 1, 2, 4만 사용합니다.
예를 들어서 124 나라에서 사용하는 숫자는 다음과 같이 변환됩니다.
10진법 | 124 나라 | 10진법 | 124 나라 |
1 | 1 | 6 | 14 |
2 | 2 | 7 | 21 |
3 | 4 | 8 | 22 |
4 | 11 | 9 | 24 |
5 | 12 | 10 | 41 |
자연수 n이 매개변수로 주어질 때, n을 124 나라에서 사용하는 숫자로 바꾼 값을 return 하도록 solution 함수를 완성해 주세요.
제한사항
-
n은 500,000,000 이하의 자연수입니다.
입출력 예
n | result |
1 | 1 |
2 | 2 |
3 | 4 |
4 | 11 |
코드
def solution(n):
answer = ""
while n > 0:
n, i = divmod(n, 3) # n : 몫, i : 나머지
if i == 0:
n = n - 1
answer = '412'[i] + answer
return answer
풀이 방법
• divmod(n, 3) : n을 3으로 나눈 n(몫)과 i(나머지)를 튜플 형태로 돌려주는 함수를 이용한다.
n, i = divmod(n, 3)
• 나머지 0, 1, 2만 나온다. 단, 나머지가 0이면 n(몫)을 1을 빼야 124 나라를 표현할 수 있다.
• 일의 자리 수가 1, 2, 4로 표현되기 때문에 나머지가 0일때 4, 나머지가 1일때, 1, 나머지가 2일때 2를 반환한다.
answer = '412'[i] + answer
'Coding Test > Programmers_Python' 카테고리의 다른 글
[프로그래머스/python] 다음 큰 숫자 (0) | 2020.08.14 |
---|---|
[프로그래머스/python] 올바른 괄호 (0) | 2020.08.14 |
[프로그래머스/python] JadenCase 문자열 만들기 (0) | 2020.08.11 |
[프로그래머스/python] 땅따먹기 (0) | 2020.08.08 |
[프로그래머스/python] 최솟값 만들기 (0) | 2020.08.06 |