Programmers 124 나라의 숫자를 풀어보자

Programmers 124 나라의 숫자를 풀어보자

프로그래머스 코딩테스트 연습문제 124 나라를 풀어봤다

124 나라

참고[https://thisisablog.tistory.com/14]
124 나라가 있습니다. 124 나라에서는 10진법이 아닌 다음과 같은 자신들만의 규칙으로 수를 표현합니다.

124 나라에는 자연수만 존재합니다.
124 나라에는 모든 수를 표현할 때 1, 2, 4만 사용합니다.
예를 들어서 124 나라에서 사용하는 숫자는 다음과 같이 변환됩니다.

10진법 124 나라
1 1
2 2
3 4
4 11
5 12
6 14
7 21
8 22
9 24
10 41

자연수 n이 매개변수로 주어질 때, n을 124 나라에서 사용하는 숫자로 바꾼 값을 return 하도록 solution 함수를 완성해 주세요.


문제를 보고 패턴을 찾아야겠다는 생각부터 했다.
3의 배수로 끊어지고, 끝자리가 1, 2, 4로 반복된다는 것을 파악했다.

끝자리는 그럼 1,2,4를 돌려주는 것으로 끝낼 수 있는데, 이제 앞자리가 문제가 된다.
앞자리 패턴을 찾기 위해서 문제 표에는 10까지만 나와있지만, 21까지 구해봤다.
21까지 쭉 따라 쓰다보니, 앞자리 역시 1,2,4가 반복되고 있다는 것을 파악했다.
맨 뒷자리 1,2,4가 끝나면 그 다음 자리 index가 하나 올라가고 그 앞의자리도 마찬가지였다.

그렇다면, 뒤에서부터 자리 수를 채워주는 게 낫다고 생각했고
다 채워준 다음에 뒤집어 버리는 방식을 택했다.
그래서

1
[::-1]

을 이용해 줬고 코드는 다음과 같이 작성했다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
def solution(n):
if n<3:
return n
elif n==3:
return 4
result=''
index=['4','1','2']
rem=0
quo=0

while n>3:
rem=n%3
quo=n//3
print(rem,quo)
result+=index[rem]
print('res = ',result)
if rem==0: quo-=1
n=quo
print('n={}, rem={}, result={}'.format(n, rem, result))

result+=str(n)
result=result.replace('3','4')
return result[::-1]

Programmers 124 나라의 숫자를 풀어보자

http://tkdguq05.github.io/2019/02/25/Programmers/

Author

SangHyub Lee, Jose

Posted on

2019-02-25

Updated on

2023-12-08

Licensed under

Comments