inblog logo
|
stupefyee
    알고리즘문제풀기

    [JAVA 문제 풀이] 293. 지폐 접기

    프로그래머스 (340199)
    Stupefyee's avatar
    Stupefyee
    Jun 02, 2025
    [JAVA 문제 풀이] 293. 지폐 접기
    Contents
    내가 작성한 코드다른 사람의 코드
    school.programmers.co.kr
    https://school.programmers.co.kr/learn/courses/30/lessons/340199
    notion image
     

    내가 작성한 코드

    class Solution { public int solution(int[] wallet, int[] bill) { int walletHeight = Math.min(wallet[0], wallet[1]); int walletWidth = Math.max(wallet[0], wallet[1]); int billHeight = Math.min(bill[0], bill[1]); int billWidth = Math.max(bill[0], bill[1]); int answer = 0; while (true) { // 조건 만족할 때까지 반복 if (walletHeight >= billHeight && walletWidth >= billWidth) { break; } // 항상 더 긴 쪽을 반으로 접기 if (billHeight >= billWidth) { billHeight /= 2; } else { billWidth /= 2; // 너비가 항상 더 길어야 함 >> 너비가 높이보다 작아질 경우 각 변수 값 교환 if (billHeight > billWidth) { int tmp = billHeight; billHeight = billWidth; billWidth = tmp; } } answer++; } return answer; } }
     

    다른 사람의 코드

    class Solution { public int solution(int[] wallet, int[] bill) { int answer = 0; while(max(wallet) < max(bill) || min(wallet) < min(bill)) { bill[bill[0] > bill[1] ? 0 : 1] /= 2; // 둘중에 큰 쪽을 반으로 접기 answer++; } return answer; } // 각 값의 최대, 최소값을 구하는 메서드 private int max(int[] arr) { return Math.max(arr[0], arr[1]); } private int min(int[] arr) { return Math.min(arr[0], arr[1]); } }
     
    Share article
    Contents
    내가 작성한 코드다른 사람의 코드

    stupefyee

    RSS·Powered by Inblog