한 자리씩 뜯어서 봐주면 됩니다!
숫자는 5를 기준으로 생각해주면 됩니다.
마이너스 해서 없애주는 것이 낫습니다.
10으로 만들어서 넘겨주는 것이 낫습니다.
ex) 16 이면 4를 더해서 20으로 만들어주고 10씩 2번 뺴서 6번의 연산을 거치면 됩니다.
주의
5보다 클 때는 앞자리 수가 무엇인지도 생각해주어야 합니다!
5보다 크면서 앞 자리수가 5 미만인 경우
45의 경우는 5를 빼주는 경우가 더 최적입니다.
반대의 경우
5보다 크면서 앞 자리수가 5 이상인 경우
95의 경우는 5를 더해주는 경우가 더 최적입니다.
반대의 경우
맨 앞자리수가 5을 넘는 경우도 10으로 만들어주는 것이 이득입니다.
예시) 678
저의 경우 맨 앞자리는 그냥 - 연산만 해주면 된다고 생각했습니다......😂
function solution(storey) {
let answer = 0;
while(storey != 0){
let num = storey % 10;
if(num > 5 ){//5보다 큰 경우
//5보다 크면 10자리로 넘기는게 나음
answer += (10-num);
//올림 처리
storey += (10-num);
}
else if(num === 5){ //5인 경우
let temp = storey-num;
temp /= 10;
if((temp % 10) >= 5){
//5보다 크면 10자리로 넘기는게 나음
answer += (10-num);
//올림 처리
storey += (10-num);
}
else{
answer += num;
storey -= num;
}
}
else{
answer += num;
storey -= num;
}
storey /= 10;
}
return answer;
}