*문제 출처는 프로그래머스에 있습니다.
문제 제목: 124 나라의 숫자(2단계)
문제 사이트: https://programmers.co.kr/learn/courses/30/lessons/12899
- 124 나라의 숫자
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이하의 자연수 입니다.
입출력 예nresult
1 | 1 |
2 | 2 |
3 | 4 |
4 | 11 |
n이 3의 배수라면 무조건 4를 추가하고, n을 3으로 나눈 몫에서 1을 뺀 값을 저장한다.
n이 3의 배수가 아니라면 3진법을 구하는 것과 동일하게 3으로 나눈 나머지를 저장하고, n을 3으로 나눈 몫으로 저장한다.
* 3진수 개념 짚고가기
2진수는 2를 기반으로 하는 숫자체계로서,
컴퓨터 내에서 데이터를 표현하기 위해 사용된다. 2 진수는 "0"과 "1"이라는 오직 2가지 종류의 숫자로만 구성된다.
3진수는 3을 기반으로 하는 숫자체계로서,
"0","1","2" 로 이루어진 숫자체계다.
따라서 이 숫자체계를 처음부터 나열한다면,
이런 방식으로 진행된다.
이 3진수 체계를 간단하게 함수로 나타내면 다음과 같다.
def solution(n):
answer = ''
if n == 0:
return 0
while n > 0:
re = n % 3 # 나머지
n //= 3
answer += str(re)
return answer
124 나라의 숫자는 해당 3진수 체계를 숫자 0,1,2로 표현한 것이 아니라, 1,2,4 로만 표현한 것이다.
따라서 0,1,2 체계를 이용하면서 3진수를 1,2,4로 나타낸 것은 리스트 구조를 이용하여 표현할 수 있다.
풀이 1. 리스트 이용
def solution(n):
answer = ''
arr = ['1','2','4']
while n > 0:
n = n-1
answer = arr[n%3] + answer
n //= 3 # 몫
return answer
'coding test - python > Programmers' 카테고리의 다른 글
Programmers / 기능 개발 / Python 파이썬 (0) | 2022.06.30 |
---|---|
Programmers / 큰 수 만들기 / Python 파이썬 (0) | 2022.06.30 |
Programmers / 방문 길이 / Python 파이썬 (0) | 2022.06.28 |
Programmers / 다음 큰 숫자 / Python 파이썬 (0) | 2022.06.27 |
Programmers / 줄 서는 방법 / Python 파이썬 (0) | 2022.06.26 |