코딩테스트

[프로그래머스] [PCCE 기출문제] 9번 / 지폐 접기 자바

mhui123 2025. 3. 25. 16:16
반응형

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

 

프로그래머스

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

programmers.co.kr

 

반복문을 사용하여, 지폐크기를 비교한 후 지폐크기 < 지갑크기가 될 때 까지의 접은 횟수를 반환하는 문제이다.

여기서 지폐의 회전을 허용하므로 두 종류의 비교를 사용하여 문제를 처리하였다.

- billX <= walletX && billY <= walletY

- billY <= walletX && billX <= walletY

- 둘 중 하나의 조건에 부합할 때 까지 조건문을 반복하고 반복횟수를 반환한다

 

    public int solution(int[] wallet, int[] bill) {
        return calFold(wallet, bill);
    }

    // 접은 횟수 반환
    public int calFold(int[] wallet, int[] bill){
        int foldCount = 0;
        int walletX = wallet[0];
        int walletY = wallet[1];
        int billX = bill[0];
        int billY = bill[1];

        while(true){
            boolean isFit = billX <= walletX && billY <= walletY;
            boolean isRotatedFit = billY <= walletX && billX <= walletY;

            if(isFit || isRotatedFit) {
                break;
            }

            if(billX > billY){
                billX /= 2;
            } else if(billY > billX){
                billY /= 2;
            }

            foldCount ++;
        }

        return foldCount;
    }

 

 

반응형