지갑의 가로 세로 크기를 담은 1차원 배열 wallet, 지폐의 가로 세로 크기를 담은 1차원 배열 bill이 주어질 때, 지갑에 넣기 위해서 지폐를 최소 몇 번 접어야하는지 return 하라.

지갑의 가로 세로를 비교하여 더 큰 쪽을 walletMax, 작은 쪽을 walletMin으로 지정한다.
지폐도 똑같이 더 큰 쪽을 billMax, 작은 쪽을 billMin으로 지정한다.
이 후, billMax > walletMax || billMin > walletMin 조건을 이용하여 반복문을 진행한다.
반복문에서는 지폐의 큰 쪽이 작은쪽보다 크면 큰 쪽을 /2 하고, 그 값을 작은 쪽과 비교하여, 작은 쪽보다 더 작다면 둘이 swap한다.
해당 과정에서 answer을 1증가 시킨다.
class Solution {
public int solution(int[] wallet, int[] bill) {
int answer = 0;
int walletMax = Math.max(wallet[0], wallet[1]);
int walletMin = Math.min(wallet[0], wallet[1]);
int billMax = Math.max(bill[0], bill[1]);
int billMin = Math.min(bill[0], bill[1]);
while(billMax > walletMax || billMin > walletMin){
if(billMax > billMin){
billMax /= 2;
answer++;
if(billMax < billMin){
int temp = billMax;
billMax = billMin;
billMin = temp;
}
}
}
return answer;
}
}
Review
class Solution {
public int solution(int[] wallet, int[] bill) {
int answer = 0;
int walletMax = Math.max(wallet[0],wallet[1]);
int walletMin = Math.min(wallet[0],wallet[1]);
int billMax = Math.max(bill[0],bill[1]);
int billMin = Math.min(bill[0],bill[1]);
while(walletMax < billMax || walletMin < billMin){
if(billMax > billMin){
billMax /=2;
}else{
billMin /=2;
}
if(billMax < billMin){
int temp = billMax;
billMax = billMin;
billMin = temp;
}
answer++;
}
return answer;
}
}
어렵지 않은 문제였다.
사실 문제에서 풀이 과정을 주었기 때문에 그대로 구현하면 되었다.
하지만, 풀이 과정을 주지 않았더라면 조금 더 생각했을 것 같다.

Review
