[프로그래머스] 마법의 엘리베이터 (Java)
https://school.programmers.co.kr/learn/courses/30/lessons/148653
입력 : 엘리베이터가 있는 층을 나타내는 정수 storey (1 ≤ storey ≤ 100,000,000)
출력 : 0츠응로 가기 위해 필요한 마법의 돌의 최소값
O(log n)
그리디
없음
없음
구현
public class Solution {
public int solution(int storey) {
int answer = 0;
while (storey != 0) {
int digit = storey % 10; // 현재 자리의 숫자
storey /= 10; // 다음 자리 준비
if (digit > 5 || (digit == 5 && (storey % 10) >= 5)) {
// 반올림이 유리한 경우
answer += 10 - digit; // 10까지의 거리 더하기
storey++; // 다음 자리 올림
} else {
// 내림이 유리한 경우
answer += digit; // 현재 자리에서 빼는 연산
}
}
return answer;
}
}