본문 바로가기
Algorithm/Programmers

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

Baspo8 2024. 5. 17.

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

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

풀이

주어진 층에서 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;
    }
}