본문 바로가기

Algorithm

[JAVA 알고리즘] 지폐 접기

✅ 문제

 

https://school.programmers.co.kr/learn/courses/30/lessons/340199

 

프로그래머스

SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프

programmers.co.kr

 

 

✅ 코드

 

class Solution {
    public int solution(int[] wallet, int[] bill) {
        int answer = 0;

        // 지갑의 작은/큰 값
        int wSmall = Math.min(wallet[0], wallet[1]);
        int wLarge = Math.max(wallet[0], wallet[1]);

        int b0 = bill[0];
        int b1 = bill[1];

        while (true) {
            int bSmall = Math.min(b0, b1);
            int bLarge = Math.max(b0, b1);

            // 들어가면 종료
            if (bSmall <= wSmall && bLarge <= wLarge) {
                break;
            }

            // 큰 쪽을 반으로 접기
            if (b0 >= b1) {
                b0 /= 2;
            } else {
                b1 /= 2;
            }
            answer++;
        }

        return answer;
    }
}