728x90
programmers.co.kr/learn/courses/30/lessons/12899
접근
1, 2, 4의 숫자를 활용해서 10진법의 수를 표현해야한다. 3진법을 사용해서 변환을 시도하였고 그 이후에는 어떻게 해야할지 감이 잡히지 않았다.
먼저 3진법으로 변환하는 코드에서 while문을 사용할 때 0을 초과할 때는 n을 3으로 나눈 나머지를 추가하고 n을 3으로 나누는 것을 반복한다. 하지만 124의 나라는 3진법으로 변환할 때 0, 1, 2가 아닌 1, 2, 4를 사용한다.
이때 1~10을 3진법으로 변환하면서 규칙을 찾아야한다. 나머지가 0일 때는 4, 1일 때는 1, 2일 때는 2를 최종해에 추가를 하며 나머지가 0일 때는 몫에서 -1을 한다.
나는 규칙을 찾지 못했고 수학적인 사고력이 필요한 문제를 깊게 풀어보고 이해해야겠다.
구현
나머지가 0일 때는 4, 1일 때는 1, 2일 때는 2를 갖도록 num 리스트를 만들었다.
이후 n이 0이 아닐 때까지 반복문을 돌면서 찾은 규칙을 적용한다.
나머지가 0일 때는 몫을 -1하고 n에 다시 대입하며 나머지를 활용해서 124나라의 숫자에 맞도록 answer에 추가한다.
def solution(n):
answer = ''
num = ['4','1','2']
while n != 0:
mok = n//3
na = n%3
if na == 0:
mok -= 1
n = mok
answer = num[na]+answer
return answer
'알고리즘 풀이 > 프로그래머스' 카테고리의 다른 글
[Level 2] 방문 길이 (0) | 2021.03.23 |
---|---|
[Level 2] 점프와 순간이동 (0) | 2021.03.23 |
[Level 2] 영어 끝말잇기 (0) | 2021.03.22 |
[Level 2] 스킬트리 (0) | 2021.03.22 |
[Level 3] 거스름돈 (0) | 2021.03.17 |