문제
프로그래머스 - 124 나라의 숫자
해결 과정
- 적어보니까 규칙 발견
- 우선
country = ["4","1","2"]
- 3으로 나누었을 때 나머지가 0이면 4
- 3으로 나누었을 때 나머지가 1이면 1
- 3으로 나누었을 때 나머지가 2이면 2
while n:
n이 0이 될 때까지 반복문을 돈다.
answer
는 n을 3으로 나눈 나머지일 때의 해당 숫자와 여태 구한 answer를 붙여준다.
- n이 3으로 나눴을 때 0이라면 (그림에 빨간 형광펜) n은 n-1해준 값에 3을 나눈 몫이고
- 0이 아니라면 n은 n을 3으로 나눈 몫
- 이 과정을 반복하면 answer 뒤에 계속 나머지에 따른 숫자가 붙는다.
시행착오
- 조합으로 풀었는데 런타임 에러가 났다. 아무래도 이렇게 푸는게 아닌갑다..
def combination(arr,n):
result = []
if n == 0:
return [[]]
for i in range(len(arr)):
front = arr[i]
for back in combination(arr[i:],n-1):
result.append([front] + back)
return result
def solution(n):
array = []
country = ['1','2','4']
for i in range(1,4):
for j in combination(country,i):
array.append(j)
return ''.join(array[n-1])
풀이
def solution(n):
answer = ''
country = ["4","1","2"]
while n:
answer = country[n % 3] + answer
if n % 3 == 0:
n = (n-1) //3
else:
n = n // 3
return answer