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일 경우에 앞자리를 고려해야 하는 것을 유의해야 할 것 같다.