최소한의 버튼을 눌러서 0층으로 이동하기 위해 필요한 마법의 돌 개수를 return하도록 solution함수를 작성하는 문제이다.
4이하면 빼고, 6이상이면 더하는 것이 이득이라는 것은 쉽게 알 수 있었다.
하지만 5일 경우 앞의 숫자를 보고 더할 지 뺄 지 판별해야 했다.
class Solution {
public int solution(int storey) {
int answer = 0;
int count = 0;
String ss = storey + "";
int[] arr = new int[ss.length()];
for (int i = 0; i < arr.length; i++) {
arr[i] = ss.charAt(i) - '0';
}
for (int i = arr.length-1; i >= 0; i--) {
if (arr[i] > 5) {
count += 10 - arr[i];
if (i == 0){
count++;
} else {
arr[i-1]++;
}
} else if (arr[i] == 5 && i > 0 && arr[i-1] >= 5) {
arr[i-1]++;
count += 5;
} else {
count += arr[i];
}
}
answer = count;
return answer;
}
}