핵심 로직
- 각 자리수에 있는 숫자들을 비교해야한다.
- 숫자가 4이하로 작으면 => 빼는게 이득
- 숫자가 6이상으로 크면 => 더하는게 이득 (그리고 앞자리에 1을 더해줘야함)
- ★★★★★ 판단해야 5는 앞자리를 보고 결정해야함 ★★★★★
- 앞 자리가 4이하면 현재 자리수의 5는 빼는게 이득 / 앞 자리가 6 이상이면 현재 자리수의 5는 더하는게 이득
Code
class Solution {
public int solution(int storey) {
int answer = 0;
String stVal = String.valueOf(storey);
char[] chars = stVal.toCharArray();
int[] ints = new int[chars.length];
for (int i = 0; i < chars.length; i++) {
ints[i] = chars[i] - '0';
}
for (int i = ints.length - 1; i >= 0; i--) {
int anInt = ints[i];
if (anInt == 10) {
if (i - 1 < 0) {
answer += 1;
continue;
}
ints[i - 1]++;
continue;
}
if (anInt >= 6) {
answer += (10 - anInt);
if (i - 1 < 0) {
answer += 1;
continue;
}
ints[i - 1]++;
} else if (anInt <= 4) {
answer += anInt;
} else if (anInt == 5) {
if (i - 1 < 0) {
answer += 5;
continue;
} else {
if (ints[i - 1] < 5) {
answer += anInt;
} else {
answer += 5;
ints[i - 1]++;
}
}
}
}
return answer;
}
}