function solution(storey) {
let answer = 0;
let arr = [...String(storey)].map(el => +el);
for (let i = arr.length - 1; i >= 0; i--) {
if (arr[i] > 5) {
if (i === 0) answer += 1;
answer += (10 - arr[i]);
arr[i - 1] += 1;
} else if (arr[i] === 5 && arr[i - 1] >= 5) {
answer += 5;
arr[i - 1] += 1;
} else {
answer += arr[i];
}
}
return answer;
}
쉬운 듯 어려운 문제다.
경계를 잘 따져야봐야 겠다는 생각을 한 문제다.
일단 입력값의 제한을 보면 다음과 같다.
완전탐색으로 접근해도 무방한 문제라고 생각했다.
문제는 탐색을 진행하면서 경우의 수를 따져주는 것이다.
위 3가지 경우의 수를 떠올릴 수 있었다.