[프로그래머스] 마법의 엘리베이터 - 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;
}
}