프로그래머스 마법의 엘레베이터 Javascript
프로그래머스 마법의 엘레베이터는 재귀를 활용한 풀이를 요구하는 문제입니다. 특정 층에서 0층으로 이동하기 위해서는 주어진 선택의 숫자를 조합해서 최소의 수로 이동해야 합니다.
문제에서 주어진 -1, +1, -10, +10 ... 으로 이동하기 위해서는 숫자 별로 조합해보면서 최소의 수를 만드는 공식을 우선 작성해봐야 합니다.
예를 들어 0층에서 16층으로 이동하기 위해서는 간단하게 2가지 방법을 생각해볼 수 있습니다.
각각의 방법을 공식화 하면 다음과 같은 공식을 만들어낼 수 있습니다. solution 함수를 재귀로 돌리면서 몫과 나머지를 구한 다음 각 숫자들을 조합해서 최소의 수가 나오는 결과값을 반환하면 됩니다.
프로그래머스 마법의 엘레베이터 Javascript
function divmod(num, divisor){
return [Math.floor(num / divisor), num % divisor]
}
function solution(storey){
if (storey <= 1){
return storey;
}
let [q, r] = divmod(storey, 10);
return Math.min(solution(q) + r, solution(q+1) + (10 - r))
}
console.log(solution(2554)) // 16
재귀를 사용해서 푸는 문제고, 주어진 예제를 통해서 재귀로 풀어볼 수 있는 공식을 만들어보는게 중요한 문제였습니다. 재귀를 할 때 스택에 함수가 어떻게 쌓이는지 고민하고 풀어본다면 쉽게 풀 수 있는 문제입니다.
🚀️ 도움이 되셨다면 구독과 좋아요 부탁드립니다 👍️
'Algorithm' 카테고리의 다른 글
프로그래머스 가장 큰 수 Javascript (0) | 2023.04.07 |
---|---|
프로그래머스 체육복 Greedy 탐욕법 문제 Javascript (0) | 2023.04.05 |
프로그래머스 완주하지 못한 선수 해시 맵 사용 풀이 파이썬 (0) | 2023.03.22 |
Queue 알고리즘 프린터 문제 (0) | 2022.10.13 |
Queue 박스 포장 문제 (0) | 2022.10.12 |
댓글