코딩테스트 연습 - 124 나라의 숫자 | 프로그래머스 스쿨 (programmers.co.kr)
모범 답안
def solution(n):
result = []
while n:
t = n % 3
if not t:
t = 4
n -= 1
result.append(str(t))
n //= 3
return ''.join(result[::-1])
def solution(n):
num = ['1', '2', '4']
result=''
while n > 0:
n -= 1
result = num[n % 3] + result
n //= 3
return result
나오는 숫자가 3개 밖에 없으므로 3진수를 이용하여 변환하면 구현할 수 있다.
일반 3진수는 0이 있어서 일반적인 숫자 체계처럼 가장 앞의 숫자로 0이 올 수 없지만 124나라의 진수는 11처럼 가장 앞의 숫자로 가장 작은 단위의 숫자가 올 수 있다.
10진법 | 3진법 | 124나라 |
1 | 1 | 1 |
2 | 2 | 2 |
3 | 10 | 4 |
4 | 11 | 11 |
5 | 12 | 12 |
6 | 20 | 14 |
7 | 21 | 21 |
8 | 22 | 22 |
9 | 100 | 24 |
빨간 부분 이외에는 3진법으로 변환하는 값과 동일하다.
빨간 부분은 3의 배수들만 해당하며, 여기에 대한 로직만 세워주면 된다.
3의 배수는 3으로 나눴을 때 나머지가 0인데, 124 나라의 숫자를 보면 다 4를 가지고 있다.
따라서 3의 배수에 대해서 4로 처리하고, 몫에 대해서 1만 빼주면 답을 구할 수 있다.
참조
[프로그래머스] 124 나라의 숫자 (level2, python) — 🐛 HOON DEVLog (tistory.com)
[프로그래머스] 124 나라의 숫자 (level2, python)
문제 설명 124 나라가 있습니다. 124 나라에서는 10진법이 아닌 다음과 같은 자신들만의 규칙으로 수를 표현합니다. 124 나라에는 자연수만 존재합니다. 124 나라에는 모든 수를 표현할 때 1, 2, 4만
hoons-dev.tistory.com
'코딩테스트 > programmers (python)' 카테고리의 다른 글
Programmers / 2단계 / 전력망을 둘로 나누기 / python (0) | 2024.04.10 |
---|---|
Programmers / 2단계 / 메뉴 리뉴얼 / python (0) | 2024.04.09 |
Programmers / 2단계 / 연속된 부분 수열의 합 / python (0) | 2024.04.06 |
Programmers / 2단계 / 큰 수 만들기 / python / 탐욕법(Greedy) (0) | 2024.04.04 |
Programmers / 2단계 / 삼각 달팽이 / python (0) | 2024.04.02 |