[프로그래머스 Level2][Python] 124 나라의 숫자

토끼는 개발개발·2021년 12월 30일
0

Programmers

목록 보기
57/68
post-thumbnail

[프로그래머스 Level2] 124 나라의 숫자

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

문제설명 📖

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

  1. 124 나라에는 자연수만 존재합니다.
  2. 124 나라에는 모든 수를 표현할 때 1, 2, 4만 사용합니다.

예를 들어서 124 나라에서 사용하는 숫자는 다음과 같이 변환됩니다.

자연수 n이 매개변수로 주어질 때, n을 124 나라에서 사용하는 숫자로 바꾼 값을 return 하도록 solution 함수를 완성해 주세요.


제한사항

  • n은 500,000,000이하의 자연수 입니다.

입출력 예



문제접근 💡

  1. 규칙 찾기 (1,2,7 차례로 더해짐)
  2. 3의 배수는 4로 끝나고(4, 14, 24, ...), 3의 배수가 아닌 수는 3진법으로 해결
  3. 3의 배수이면 4를 먼저 쓰고, 몫-1을 붙임 (ex. 9의 경우 '42')
  4. 3의 배수가 아니면 n을 3으로 나누고, 나머지를 쓴다.
  5. 반복한다.
  6. answer 문자열을 거꾸로 return

문제풀이 💡

def solution(n):
    answer = ''
    while n > 0:
        if n % 3 ==0 :
            answer += "4"
            n = n//3 -1
        else:
            answer += str(n % 3)
            n //= 3
    return answer[::-1]


다른풀이 💡

def solution(n):
	if n <= 3:
    	return '124'[n-1]
    else:
    	q, r = divmod(n-1, 3)
        return solution(q) + '124'[r]
  • divmod(a,b) : a를 b로 나누었을 때 몫과 나머지를 tuple 형태로 return
profile
하이 이것은 나의 깨지고 부서지는 기록들입니다

0개의 댓글