728x90
124 나라의 숫자
문제 설명
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
처음 실패한 답
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | def solution(n): answer = '' quot = n while quot>3: if quot==3: answer+='4' remain = quot%3 if not remain: answer+='4' else: answer+=str(remain) quot = quot//3 return answer[::-1] | cs |
성공한 내 답
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | def solution(n): answer = '' quot = n while quot>3: remain = quot%3 if not remain: answer+='4' quot = (quot-1)//3 else: answer+=str(remain) quot = quot//3 if quot==3: answer+='4' else: answer+=str(quot) return answer[::-1] | cs |
남의 답 1
1 2 3 4 5 6 7 8 9 10 | def change124(n): num = ['1','2','4'] answer = "" while n > 0: n -= 1 answer = num[n % 3] + answer n //= 3 return answer | cs |
남의 답 2
1 2 3 4 5 6 | def change124(n): if n<=3: return '124'[n-1] else: q, r = divmod(n-1, 3) return change124(q) + '124'[r] | cs |
남의 답 3
1 2 3 4 | def change124(n): answer = "0" return ['4', '1', '2'][n%3] if n < 4 else change124((n-1) // 3) + ['4', '1', '2'][n%3] | cs |
남의 답 4
1 2 | def change124(n): return '' if n == 0 else change124((n - 1) // 3) + "412"[n % 3] | cs |
남의 답 5
1 | solution = lambda n: (solution(i) if (i := (n - 1) // 3) else "") + "124"[(n - 1) % 3] | cs |
1221점 + 8점 -> 1229점
728x90
'Python' 카테고리의 다른 글
| 210716 프로그래머스 코딩 연습 level1 숫자 문자열과 영단어 (0) | 2021.07.16 |
|---|---|
| 210715 프로그래머스 코딩 연습 level2 숫자의 표현 (0) | 2021.07.15 |
| 210713 프로그래머스 코딩 연습 N개의 최소공배수 (0) | 2021.07.13 |
| 210710 프로그래머스 코딩 연습 level2 JadenCase 문자열 만들기 (0) | 2021.07.10 |
| 210710 프로그래머스 코딩 연습 level2 최댓값과 최솟값 (0) | 2021.07.10 |




최근댓글