Source
https://school.programmers.co.kr/learn/courses/30/lessons/12899
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
Code
from collections import deque
def solution(n):
nums = [n, 0]
nums_list = deque()
while nums[0] > 0:
nums = transform(nums[0])
nums_list.appendleft(str(nums[1]))
return ''.join(nums_list)
def transform(n: int) -> tuple:
temp = divmod(n, 3)
res = [temp[0], temp[1]]
if res[1] == 0:
res[0] = res[0] - 1
res[1] = 4
return res
How to solve?
1. def transform
def transform(n: int) -> tuple:
temp = divmod(n, 3)
res = [temp[0], temp[1]]
if res[1] == 0:
res[0] = res[0] - 1
res[1] = 4
return res
1, 2, 4를 x, y, z로 생각하고 3개의 컨테이너로 분류한다.
10진법의 숫자를 3으로 divmod 연산을 한다면 나머지는 1, 2, 0으로 나오게 된다.
이때 나머지가 0이 나온다면 3개의 컨테이너 중 '4'에 속하는 것으로 보아
몫의 값을 하나 내리고 0을 4로 교체 해준다.
2. def solution
def solution(n):
nums = [n, 0]
nums_list = deque()
while nums[0] > 0:
nums = transform(nums[0])
nums_list.appendleft(str(nums[1]))
return ''.join(nums_list)
구해진 나머지 값을 deque자료형을 이용해 오른쪽 방향으로 삽입한다.
위의 def transform을 몫이 0이하가 될때까지 반복해서 호출하며
호출이 끝나면 join으로 넣어진 값들을 합쳐서 출력한다.
'Problem solve' 카테고리의 다른 글
| [프로그래머스] 하노이 탑 (Python) (0) | 2023.03.11 |
|---|---|
| [프로그래머스] 멀쩡한 사각형 (Python) (0) | 2023.02.06 |
| [백준] 11279번 최대 힙 (Python) (0) | 2023.01.13 |
| [백준] 11866번 요세푸스 문제 (Python) (0) | 2023.01.12 |
| [백준] 15828번 Router (Python) (0) | 2023.01.11 |