소요 시간: 11분 16초
문제의 난이도가 그렇게 높지 않아서 푸는 데에 큰 어려움은 없었음
나의 정답
class Solution { public boolean compareSize(int[] wallet, int[] bill) { if ((wallet[0] >= bill[0] && wallet[1] >= bill[1]) || wallet[0] >= bill[1] && wallet[1] >= bill[0]) { return true; } else { return false; } } public void fold(int[] bill) { if (bill[0] >= bill[1]) { bill[0] /= 2; } else { bill[1] /= 2; } } public int solution(int[] wallet, int[] bill) { int answer = 0; while(true) { if(compareSize(wallet, bill)) { break; } fold(bill); answer++; } return answer; } }
AI 정답
import java.util.Arrays; class Solution { public int solution(int[] wallet, int[] bill) { int answer = 0; // 지갑과 지폐의 가로, 세로 중 큰 값을 항상 0번 인덱스에 두도록 정렬 // 이렇게 하면 비교 로직이 훨씬 단순해집니다. int wMin = Math.min(wallet[0], wallet[1]); int wMax = Math.max(wallet[0], wallet[1]); int bMin = Math.min(bill[0], bill[1]); int bMax = Math.max(bill[0], bill[1]); // 지폐가 지갑에 들어가지 않는 동안 반복 while (bMin > wMin || bMax > wMax) { // 항상 긴 쪽을 접음 bMax /= 2; // 접은 후 다시 대소 관계 재설정 int tempMin = Math.min(bMin, bMax); int tempMax = Math.max(bMin, bMax); bMin = tempMin; bMax = tempMax; answer++; } return answer; } }