728x90
반응형
문제:
124 나라가 있습니다. 124 나라에서는 10진법이 아닌 다음과 같은 자신들만의 규칙으로 수를 표현합니다.
1. 124 나라에는 자연수만 존재합니다.
2. 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 함수를 완성해 주세요.
풀이 방법:
1~10까지의 예시를 잘 보면 3단위로 맨 오른 쪽 끝의 자리가 1,2,4가 반복 됨을 알 수 있다. 즉 124 나라의 숫자는 3의 나머지와 관련 있다는 것을 알 수 있다. 맨 오른쪽 끝 자리 이외에도 계속 1,2,4가 반복이므로 while문을 사용해서 n이 0이 될 때까지 반복하도록 한다. 이 때 divmod라는 함수를 사용했는데 divmod(a,b)로 사용을 하며 a를 b로 나눈 것의 몫과 나머지를 동시에 반환한다. 나머지가 0일 때, 몫을 1을 줄였는데 그 이유는 10진법의 1,2,3을 보면 십의 자리가 0으로 시작한다고 생각 해야 하기 때문이다.
1 2 3 4 5 6 7 8 9 10 11 12 | def solution(n): answer='' while n>0: n,r=divmod(n,3) if r==0: answer='4'+answer n-=1 elif r==1: answer='1'+answer else: answer='2'+answer return answer | cs |
728x90
반응형
'Algorithm > Python' 카테고리의 다른 글
[Programmers]Lv 2. 기능개발 (0) | 2019.01.29 |
---|---|
[Programmers]Lv 1. 정수 내림차순으로 배열하기 (0) | 2019.01.28 |
[Programmers]Lv 1. 정수 제곱근 판별 (0) | 2019.01.26 |
[Programmers]Lv 2. 스킬트리 (0) | 2019.01.25 |
[Programmers]Lv 1. 최대공약수와 최소공배수 (0) | 2019.01.24 |