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

프로그래머스 (340199)
Stupefyee's avatar
Jun 02, 2025
[JAVA 문제 풀이] 293. 지폐 접기
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

stupefyee