5일 때는? - 한 자릿수 높은 값을 체크해보아야한다. ( 일의 자리면 십의 자릿수 체크 )
한 자릿수 높은 값이 5보다 크거나 같다면? 10을 만들어 주는 것이 좋다. ( 수 증가로 더하는 횟수 감소 )
한 자릿수 높은 값이 5보다 작다면? 0을 만들어 주는 것이 좋다. ( 빼는 횟수 감소 )
3. 정답 코드 확인 및 활용 메소드 체크
3-1 : 정답 코드 확인
class Solution {
public int solution(int storey) {
int answer = 0;
//0층에 도달하면 종료
while(storey != 0) {
//1의 자릿수의 값이 5보다 크다면-같다면-작다면에 따라 처리
if(storey%10 > 5 ) {
answer += (10 -(storey%10));
storey += 10;
}else if(storey%10 == 5 && storey%100 != 0 && storey%100 >= 50) {
answer += 5;
storey += 10;
}else {
answer += storey%10;
}
storey /= 10;
}
return answer;
}
}
4. 공부하고 싶은 다른 분의 풀이
재귀 함수... 너란 녀석..
공부하자.
class Solution {
public int solution(int storey) {
if (storey <= 5) return storey;
int r = storey % 10;
int q = storey / 10;
return Math.min(r + solution(q), 10 - r + solution(q + 1));
}
}