알고리즘/문제풀이

[Python] Programmers 124 나라의 숫자

정찡이 2021. 8. 20. 22:37
728x90

1. 문제 링크

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

 

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

 

programmers.co.kr


2. 문제 요약

  • 기존 3진법 012와 다르게 124 나라에서는 124만 사용 가능하다.
  • 10진법을 124 나라 숫자로 변환한다.

 


3. 아이디어 정리

  • 124 나라 규칙을 찾아서 구현을 아래와 같이하였다.
  1. 3으로 나누어 떨어지지 않는 경우
    1. 나머지를 리스트에 넣는다.
    2. 3으로 나눈 몫을 n에 넣는다.
  2. 3으로 나누어 떨어지는 경우
    1. 4를 넣는다.
    2. 3으로 나눈 몫을 n에 넣는다.
    3. 몫은 1 제거해준다.

 


4. 문제 풀이

4-1. 내 풀이

def solution(n):
    result = list()
    while n:
        if n % 3 != 0:
            result.append(n % 3)   # 나머지 넣기
            n //= 3
        else:
            result.append(4)       # 일반적인 3 진법과 다름 - 나머지 0인 경우 4 넣어주기 
            n //= 3
            n -= 1                 # 몫하나 제거 

    return ''.join(map(str, result[::-1]))

 


5. 결론

  • 3진법 변환과 동일해 보이지만 규칙이 달라서 다른 부분만 수정하면 된다.
반응형