Notice
Recent Posts
Recent Comments
Link
«   2026/01   »
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
Archives
Today
Total
관리 메뉴

hwooo

프로그래머스 (C/C++) 148653 : 마법의 엘리베이터 본문

Study/Algorithm

프로그래머스 (C/C++) 148653 : 마법의 엘리베이터

hwooo 2024. 10. 28. 23:30

풀이

처음엔 DP라고 생각했는데 5를 기준으로 반올림하는 규칙이 보였다.

하지만 5일 경우 바로 윗자리가 5 이상일 때 -> 올림하는 게 다음 자리 계산에 유리

                                                         5 미만일 때 -> 내림하는 게 다음 자리 계산에 유리

의 규칙이 있어 해당 부분만 따로 적용했다.


코드

void up(int& storey, int& answer, int& locVal) {
    storey += locVal;
    answer += 10 - locVal;
}

void down(int& storey, int& answer, int& locVal) {
    storey -= locVal;
    answer += locVal;
}

int solution(int storey) {
    int answer = 0;
    
    while (storey) {
        int locVal = storey % 10;
        
        if (locVal == 5) {
            if (storey % 100 < 50) 
                down(storey, answer, locVal);
            else 
                up(storey, answer, locVal);
        }
        else if (locVal < 5)
            down(storey, answer, locVal);
        else
            up(storey, answer, locVal);
        
        storey /= 10;
    }
    return answer;
}