💡 Info




입출력 조건




입출력 예시




문제 이해


  • 현재 층(storey)에서 0층까지 내려가는데 엘리베이터의 마법 버튼을 최소한으로 누르는 횟수를 구하는 문제


알고리즘


풀이 시간 : 24분

  • 각 자리의 수를 오른쪽부터 확인
  • 현재 자리 수가 5보다 크면
    • 10 - digit 만큼 위로 올라가고 -> 다음 자리수에 +1 해주기
  • 현재 자리 수가 5이고 다음 자리 수가 5 이상이면
    • +1 해주기
  • 위의 모든 경우가 아니라면
    • 그냥 해당 자리 수만큼 버튼 누르기
  • storey가 0이 될 때까지 반복
class Solution {
    public int solution(int storey) {
        int answer = 0;

        while (storey > 0) {
            int digit = storey % 10;
            int next = (storey / 10) % 10;

            boolean roundUp = (digit > 5) || (digit == 5 && next >= 5);
            answer += roundUp ? 10 - digit : digit;
            if (roundUp) {
                storey += 10 - digit;
            }

            storey /= 10;
        }

        return answer;
    }
}


결과

profile
언젠가 내 코드로 세상에 기여할 수 있도록, Data Science&BE 개발 기록 노트☘️

0개의 댓글

Powered by GraphCDN, the GraphQL CDN