[프로그래머스] 마법의 엘리베이터 - JAVA

https://school.programmers.co.kr/learn/courses/30/lessons/148653

풀이

주어진 층에서 10의 제곱수만큼 이동할 수 있는 엘리베이터를 최소로 이용하여 0층으로 가야한다.

일의자리부터 보면서 5보다 크면 한자리 올림할 만큼 위로 가주고,

5보다 작으면 0이 되도록 내려간다.

5일경우 다음 자리 수를 봐야하는데 다음 자리 수가 5보다 크면 올림으로 해주고

5보다 작으면 내림으로 해줘야 최소 횟수로 이동할 수 있다.


메모리: 79.3MB

시간: 0.04ms

언어: Java 11

코드

class Solution {
    public int solution(int storey) {
        int answer = 0;

        int num = 0;
        int idx = 0;
        while(storey > 0) {
            int tmp = storey % 10;
            storey /= 10;
            if(tmp < 5) {
                num += tmp * Math.pow(10, idx);
            }else if(tmp == 5) {
                if(storey % 10 >= 5) {
                    answer += 10 - tmp;
                    storey += 1;
                }else {
                    num += tmp * Math.pow(10, idx);
                }
            }else {
                answer += 10 - tmp;
                storey += 1;
            }
            idx++;
        }

        while(num > 0) {
            answer += num % 10;
            num /= 10;
        }

        return answer;
    }
}