[알고리즘/C#] 프로그래머스 - 마법의 엘리베이터 (Lv.2)

0시0분·2024년 8월 14일
0

알고리즘

목록 보기
14/23

🖋️ 풀이 방법
6일 경우 -6을 하는것 보다 +4를 하고 -10을 하는게 효율적이라는 것 까지는 깨달았다.
하지만 그렇게 풀었더니 틀렸다..
알고보니 5일 경우를 따로 계산해줘야 했다.
5일 경우에는 현재 자릿수가 아닌 앞자리 수에 따라 달라지게 되는데,
45일 때 +5, -50을 하면 총 횟수가 10이 되기 때문에 -5, -40 으로 깎는 것이 이득이다 (총 횟수 9).
그러나 65일 때는 +5, -100, +30 으로 더하는 것이 이득이 된다. (총 횟수 9)
55의 경우는 +5, -100, +40 과 -5, -50 으로 동일하지만, 555 와 같이 자릿수가 늘어날 경우 문제가 되므로 65와 동일하게 처리해야 한다.

using System;

public class Solution {
    public int solution(int storey)
    {
        int answer = 0;

        while (storey > 0)
        {
            int mod = storey % 10;
            storey /= 10;
            if (mod > 5 || (mod == 5 && storey % 10 >= 5))
            {
                answer += 10 - mod;
                storey += 1;
            }
            else
            {
                answer += mod;
            }
        }

        return answer;
    }
}

0개의 댓글