티스토리 뷰

반응형

🚀  들어가며...

  • '레벨 2'의 문제입니다.

 

🔗 문제  

https://programmers.co.kr/learn/courses/30/lessons/12899

 

코딩테스트 연습 - 124 나라의 숫자

 

programmers.co.kr

 

📑 내용

[ 문제 설명 ]

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

 

💌 소스코드

# 문제 보자마자 3진법과 비슷하다고 생각.
# 3진법과 비슷하다면 10진법을 3진법으로 바꿀때와 마찬가지로 재귀함수를 써야한다는 생각을 함.

def solution(n):
    if n <= 3:
        answer = '124'[n - 1]
    else:
        q, r = divmod(n - 1, 3)                 # 처음에 n-1 이 아닌 n으로 (divmod(n,3)) 생각했다가 테스트케이스 몇개 해보고 변경
        answer = solution(q) + '124'[r]         # 위와 세트로 처음에는 '124'[r-1]로 생각했다가 divmod(n-1,3)으로 바꾸면서 해당부분도 수정

    return answer

 

🙋🏻‍♂️ 후기

레벨2 난이도의 문제이지만, 문제의 내용도 적은 편이고, 난이도도 그렇게 어렵지 않은 문제였던것 같습니다.

풀이의 핵심은 저는 개인적으로 3진법과 비슷하다는 생각과 더불어, 3진법과 비슷하다면 10진법을 3진법으로 바꿀때 처럼 재귀함수를 사용해야 겠다는 생각이었던 것 같습니다.

위의 생각정리가 끝났다면, 풀이 하는대에는 시간이 얼마 들지 않을 것입니다.

반응형
댓글
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
글 보관함