본문 바로가기
Algorithm

프로그래머스 마법의 엘레베이터 JavaScript

by 개발자 염상진 2023. 4. 10.

 

프로그래머스 마법의 엘레베이터 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

 

재귀를 사용해서 푸는 문제고, 주어진 예제를 통해서 재귀로 풀어볼 수 있는 공식을 만들어보는게 중요한 문제였습니다. 재귀를 할 때 스택에 함수가 어떻게 쌓이는지 고민하고 풀어본다면 쉽게 풀 수 있는 문제입니다. 

 

 

 

 

🚀️ 도움이 되셨다면 구독좋아요 부탁드립니다 👍️

 

 

프로그래머스 체육복 Greedy 탐욕법 문제 Javascript

프로그래머스 체육복 문제 프로그래머스 체육복 문제는 탐욕법으로 풀어보는 것이다. 탐욕법 알고리즘은 각 단계에서 최적이라고 고려되는 것을 선택하는 것을 반복하는 방법이다. 현재 선택

about-tech.tistory.com

 

 

프로그래머스 자전거 공장 문제 Javascript

프로그래머스 자전거 공장 문제 Algorithm 프로그래머스 자전거 공장 문제는 스택을 이용해서 풀어낼 수 있다. 기간별로 다른 누진세가 적용되기 때문에 최대한 저렴한 가격으로 자전거를 생산하

about-tech.tistory.com

 

 

프로그래머스 가장 큰 수 Javascript

프로그래머스 가장 큰 수 Javascript 프로그래머스 가장 큰 수 문제는 Level 2에 해당하는 문제로 문자열 Sorting 능력을 테스트하는 문제입니다. 문제의 핵심은 numbers 배열로 주어지는 숫자들을 어떤

about-tech.tistory.com

 

댓글