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

2023년 1월 11일

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

문제 풀이

매개변수 storey 는 현재 층을 나타내고, 현재 층에서 절대값 10^c (c >= 0 인 정수) 형태인 정수들이 적힌 버튼을 조작해 0층으로 최소한의 버튼만 조작해 내려가야 하는 문제다.
현재 층 currentStorey 가 0층이 될 때까지 while 문을 돌린다. 현재 층에서 10을 나누어 나온 몫과 나머지를 이용하는데,
나머지가 5보다 크면서 몫의 맨 오른쪽 값이 5보다 클 경우와 나머지가 6보다 큰 경우에 몫에 +1 해준다.

45 -> 40 -> 0 = 9
95 -> 100 -> 0 = 6
55 -> 60 -> 100 -> 9 = 10

나머지가 5와 같거나 큰 경우 + 버튼을 조작해 10 - 나머지만큼, 나머지가 5보다 작으면 - 버튼을 조작하여 나머지 만큼 answer에 더해주고 현재층을 몫으로 갱신한다.

solution.js
function solution(storey) {
    let answer = 0;
    let currentStorey = storey;
    while (currentStorey !== 0) {
        const remainder = currentStorey % 10;
        const quotient = Math.floor(currentStorey / 10);
        const quotientStr = String(quotient);        
        const updown = remainder >= 5 ? 10 - remainder : remainder;
        currentStorey = ((remainder >= 5 && quotientStr[quotientStr.length-1] >= 5) || remainder >= 6) ? quotient+1 : quotient;
        answer += updown;
    }
    return answer;
}

댓글