Algorithm/Programmers

[Programmers] 마법의 엘리베이터 / ⭕

cks._.hong 2024. 7. 23. 21:44
 

프로그래머스

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

programmers.co.kr

 

1. 제출 코드 (52분 32초  / Greedy)

import java.util.*;

class Solution {
    public int solution(int storey) {
        int answer = 0;
        while(storey != 0) {
            int t = storey % 10;
            storey /= 10;
            
            if(t > 5) {
                answer += 10 - t;
                storey++;
            } else if(t == 5) {
                if(storey % 10 >= 5) {
                    storey++;
                }
                answer += t;
            } else {
                answer += t;
            }
        }
        return answer;
    }
}

 

 

2. 구현 로직

  • 0층이 될 때까지 반복
    • 민수 위치 > 5일 경우, 올라가는 게 최소한의 돌을 사용할 수 있으며 앞자리를 1 더해준다.
    • 민수 위치 < 5일 경우, 내려가는 게 최소한의 돌을 사용할 수 있다.
    • 민수 위치 = 5일 경우, 앞자리를 고려해야 하는데 앞자리가 5 이상일 경우에는 올라가는 게 최소한의 돌을 사용할 수 있으며 4 이하일 경우에는 내려가는 게 최소한의 돌을 사용하는 것이다.

 

3. 유의할 점

  • 민수 위치 = 5일 경우에 앞자리를 고려해야 하는 것을 유의해야 할 것 같다.