리나 Dev토리

[프로그래머스] lv2 - 124 나라의 숫자 - 파이썬 본문

자료구조&알고리즘

[프로그래머스] lv2 - 124 나라의 숫자 - 파이썬

리나lina 2022. 7. 31. 23:38

문제 바로가기 : https://school.programmers.co.kr/learn/courses/30/lessons/12899

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

문제 설명

124 나라가 있습니다. 124 나라에서는 10진법이 아닌 다음과 같은 자신들만의 규칙으로 수를 표현합니다.

  1. 124 나라에는 자연수만 존재합니다.
  2. 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이하의 자연수 입니다.

입출력

result
1 1
2 2
3 4
4 11

해결 방법

 

처음에 진법을 제대로 이해못하고 풀어서, 진법에 대해 다시 찾아서 공부하고, 다른 분 코드를 보고 이해하고 해석하였다.

진법은 진수로 나눌수 있을 때 까지 나누어서, 몫과 나머지를 역순으로 읽으면 된다.

 

3진법은 0, 1, 2로만 가능하고, 124나라는 1, 2, 4로만 가능하다.

3진법과 124나라의 차이를 알아보기 위해, 출력을 해보고 비교해보았다.

 

ex. 3의 에서는 3진법에서는 나머지가 0, 몫이 1이여서 10이 된다. 

숫자 3진법 124 나라  
1 1 1  
2 2 2  
3 10 4 3의 배수일때,
0을 4로 바꿔주고, 
몫에서 1을 빼준다.
4 11 11  
5 12 12  
6 20 14  
7 21 21  
8 22 22  
9 100 24  
10 101 41  
11 102 42  
12 110 44  
13 111 111  
14 112 112  
15 120 114  

 

그림으로 이해하기 위해 아래처럼 그려보았다.

 

 

코드는 아래와 같다.

 

엑셀로 그려보니 확실히 이해가 갔다.

나중에 다시 풀어봐야겠다. 

Comments