문제
코딩테스트 연습 - 124 나라의 숫자
programmers.co.kr
풀이 언어
Python
풀이 방법
우선 진법 변환 문제이다. 좀 특이하긴 한데 3개의 숫자를 사용하므로 3진법을 생각하면 된다. 하지만 10진수 3을 변환했을 때 10이 아니라 4가 나오는 것을 볼 수 있다. 어떻게 변환을 해야하는 것일까? 우선 변환 전과 변환 후를 표로 나타내봤다.
10진법 | 3진법 | 124 나라 |
1 | 1 | 1 |
2 | 2 | 2 |
3 | 10 | 4 |
4 | 11 | 11 |
5 | 12 | 12 |
6 | 20 | 14 |
3으로 나누어 떨어지는 경우에만 특이한 값을 갖는 걸 볼 수 있는데 여기에도 규칙이 있다. 맨 앞 숫자에서 -1 을 하고 뒤의 0을 4로 변환해준다는 점. 즉, 3으로 나누어 떨어지는 경우 몫에서 -1을 해준다는 의미이다.
코드
def solution(n):
num = ["4", "1", "2"] # 3진수에서 0, 1, 2를 의미
answer = ''
while n > 0:
answer = num[n % 3] + answer
n = n // 3 - (n % 3 == 0)
return answer
결과
'✍️ 코테 준비 > Implementation' 카테고리의 다른 글
[구현 / Kotlin] BOJ 13459 - 구슬 탈출 (0) | 2022.04.04 |
---|---|
[구현 / Kotlin] 2022 SK ICT Family 개발자 채용 챌린지 - 2번 (0) | 2022.03.12 |