문제 설명
124 나라가 있습니다. 124 나라에서는 10진법이 아닌 다음과 같은 자신들만의 규칙으로 수를 표현합니다.
- 124 나라에는 자연수만 존재합니다.
- 124 나라에는 모든 수를 표현할 때 1, 2, 4만 사용합니다.
예를 들어서 124 나라에서 사용하는 숫자는 다음과 같이 변환됩니다.
10진법 | 124 나라 | 10진법 | 124 나라 |
1 | 1 | 6 | 14 |
2 | 2 | 7 | 21 |
3 | 4 | 8 | 22 |
4 | 11 | 9 | 24 |
5 | 12 | 10 | 41 |
자연수 n이 매개변수로 주어질 때, n을 124 나라에서 사용하는 숫자로 바꾼 값을 return 하도록 solution 함수를 완성해 주세요.
제한사항
- n은 500,000,000이하의 자연수 입니다.
입출력 예
n | result |
1 | 1 |
2 | 2 |
3 | 4 |
4 | 11 |
나의 풀이
[Python(파이썬)]
def solution(n):
answer = ''
while n > 0:
temp = list(divmod(n, 3))
if temp[1] == 0: #나머지가 0이 나오면 4로 변경후 몫을 -1 해줌
answer = '4' + answer
n = temp[0] - 1
else:
answer = ''.join(str(temp[1])) + answer
n = temp[0]
return answer
학습한 내용
10진법에서 124나라의 규칙으로 변경할때 3진법을 사용한다는 내용을 생각하지 못해서 다른 사람들의 풀이들을 참조 했다.
----> 다른 사람 풀이 참조 하지 않고 스스로 풀 수 있도록 더 많은 문제 풀어보기!!!
3진법의 힌트를 얻고 난 뒤에는 3진법은 아니고 조금 변경되는 규칙이 있었기에 그 규칙을 찾는데 많은 시간을 소요했다.
1. n의 몫과 나머지를 구한다.
2-1. 나머지가 0이 나오면 answer에 4를 더해주고 몫에서 1을 뺀후 n에 넣어준다
2-2. 0이 아닌 경우에는 나머지를 answer에 더해준다.
3. n을 몫으로 바꿔준다.
4. n이 0이 될때까지 반복한다.
5. n이 0이 된 경우 answer을 반환한다.
다른 풀이
def solution(n):
answer = ''
while n > 0:
n -= 1
answer = '124'[n % 3] + answer
n = n // 3
return answer
- divmod() 함수 - 몫과 나머지를 튜플로 반환해 주는 함수
[Python] 몫, 나머지 구하기
나눗셈 나눗셈 기호 -> 슬래쉬 1개 '/' >>> 8 / 2 4.0 # 나누어 떨어지지 않으면 반올림 된다. >>> 14 / 3 4.666666666666667 >>> 15 / 5 3.0 >>> 21 / 8 2.625 나눗셈의 몫 나눗셈의 몫 기호 -> 슬래쉬 2개 '//'..
young-library.tistory.com
문제 출처
코딩테스트 연습 - 124 나라의 숫자
programmers.co.kr
'[Python] Programmers > Level2' 카테고리의 다른 글
[프로그래머스/Level2] 기능 개발 (0) | 2021.07.07 |
---|---|
[프로그래머스/Level2] 오픈채팅방 (2019 카카오 블라인드) (0) | 2021.07.06 |
[프로그래머스/Level2] 타겟 넘버 (0) | 2021.07.05 |
[프로그래머스/Level2] 멀쩡한 사각형 (대각선에 잘린 사각형) (0) | 2021.07.05 |
[프로그래머스/Level2] 짝지어 제거하기 (2개의 같은 문자 제거) (0) | 2021.07.02 |
댓글