Python3/프로그래머스
2022.06.06 [프로그래머스] (python 파이썬) 124 나라의 숫자
ian's coding
2022. 6. 6. 18:42
728x90
반응형
https://programmers.co.kr/learn/courses/30/lessons/12899#
코딩테스트 연습 - 124 나라의 숫자
programmers.co.kr

풀이
이 문제는 10진법을 1,2,4 3개의 숫자로 나타내야한다. 보면 3진법이 0,1,2총 3가지로 나타낼 수 있다. 그래서 3진법을 베이스로해서 문제를 해결했다.
3진법과 해당 코드와 다른점은 만약 6으로 예를 들면 3진법으로 나타내면 20이 된다. 즉, 3으로 나눠지면 해당 자리수는 0이 된다. 그리고 앞의 자리수 +1 을 하게 된다.
하지만 문제에선 3으로 나눠떨어지면 현재 자리수를 최대 숫자로 하고 다음 자리수는 그대로이다. 그래서 6을 124숫자로 바꾸면 14가 된다.
그래서 우선 while문을 이용해 n이 0보다 작거나 같아질때까지 반복했다.
그리고 answer에arr[n%3-1]을 추가했다.
이유는 나머지가 1이면 arr[0]인 1이 들어가고 2면 2, 0이면 4가 들어가야하기 때문이다.
그리고 만약 n이 0으로 나눠떨어지면 n을 n//3-1을 해주었다. 이유는 위의 설명과 같이 몫의 1을 가져와 이전 자리수에 채워넣기 때문이다.
그리고 answer을 역순으로 출력했다.
1
2
3
4
5
6
7
8
9
10
11
|
def solution(n):
answer = ''
arr=[1,2,4]
while n>0:
answer+=str(arr[n%3-1])
if n%3==0:
n=n//3-1
else:
n//=3
return answer[::-1]
|
cs |
728x90
반응형