1. 문제 풀이 아이디어
- 문제에 주어진 의사코드를 그대로 구현하면 문제를 해결할 수 있다.
2. 나의 정답 코드
class Solution {
public int solution(int[] wallet, int[] bill) {
int answer = 0;
while (true) {
int walletMin = Math.min(wallet[0], wallet[1]);
int walletMax = Math.max(wallet[0], wallet[1]);
int billMin = Math.min(bill[0], bill[1]);
int billMax = Math.max(bill[0], bill[1]);
if (billMin <= walletMin && billMax <= walletMax)
break;
if (bill[0] > bill[1])
bill[0] /= 2;
else
bill[1] /= 2;
answer++;
}
return answer;
}
}
3. 정리
while
반복문 안에서 지갑과 지폐의 최소값과 최대값을 저장한다.
- 지갑의 최소값이 지폐의 최소값 이상이고, 지갑의 최대값이 지폐의 최대값 이상일 때 반복문을 빠져나온다.
- 반복문에서는 지폐의 큰 값을 2로 나누고, 결과값을 증가시키는 과정을 반복하여 문제를 해결한다.
Share article