728x90
문제 설명
124 나라가 있습니다. 124 나라에서는 10진법이 아닌 다음과 같은 자신들만의 규칙으로 수를 표현합니다.
124 나라에는 자연수만 존재합니다.
124 나라에는 모든 수를 표현할 때 1, 2, 4만 사용합니다.
예를 들어서 124 나라에서 사용하는 숫자는 다음과 같이 변환됩니다.
자연수 n이 매개변수로 주어질 때, n을 124 나라에서 사용하는 숫자로 바꾼 값을 return 하도록 solution 함수를 완성해 주세요.
제한사항
n은 50,000,000이하의 자연수 입니다.
문제해결과정
1. 처음에는 1, 2, 4 만 사용하므로 1부터 꺼내서 하나씩 쓰는줄 알았다. 그런데 n 이 5천만..이여서 뭔가 안풀릴꺼같았다.
2. 몇시간을 고민하다가 10진법이 있길래 다른진법으로 변경하다가 3진법인지 알았다.
3. 근데 3으로 나누어떨어질때만 값이 이상한걸 발견했고 그제서야 규칙을 찾을수 있었지만 어떻게 답을 도출하는지 몰라서.. 결국 검색했다.
4. 124 나라에서는 0을 사용하지 않기때문에 " 몫을 하나 낮추면 나머지가 3이 되도록 만들어 주면된다 "
4. 나누어떨어질때 몫을 -1 하면 '124 나라' 의 규칙처럼 답이 나오게 된다.
def solution(n):
answer = ''
strA = ''
while n > 0:
n, mod = divmod(n, 3)
if mod == 0:
answer += "4"
n -= 1
else:
answer += str(mod)
return answer[::-1]
728x90
'프로그래머스 > 코딩테스트 Lv. 2' 카테고리의 다른 글
올바른 괄호 (0) | 2023.09.21 |
---|---|
가장 큰 정사각형 찾기 (0) | 2023.09.20 |
3 x n 타일링 (0) | 2023.09.19 |
2 x n 타일링 (0) | 2023.09.16 |
게임 맵 최단거리 - 깊이/너비 우선 탐색(DFS/BFS) (0) | 2023.09.12 |