728x90
코드 힌트
- 문제의 핵심:
- 지갑에 들어갈 수 없는 지폐를 지갑에 넣기 위해, 지폐의 큰 쪽을 반으로 접는 문제입니다.
- 지폐의 크기를 조정할 때마다 카운트를 증가시켜, 최종적으로 지폐가 지갑에 들어갈 수 있게 만들 때까지 접는 횟수를 구합니다.
- 지갑과 지폐 크기 비교:
- wallet과 bill 배열을 비교하여 지갑이 지폐를 담을 수 있는지 확인합니다. 지갑과 지폐의 최소 크기와 최대 크기를 비교합니다.
- 지폐 접기 과정:
- bill 배열에서 큰 값을 반으로 접어 크기를 줄입니다. 이 과정은 지갑에 들어갈 수 있을 때까지 반복됩니다.
- 최대/최소 크기 계산:
- 지갑과 지폐 각각의 최대값과 최소값을 구해, 지갑과 지폐의 크기를 비교합니다.
정답은 더보기 클릭
더보기
더보기
class Solution {
public int solution(int[] wallet, int[] bill) {
int result = 0; // 지폐를 접은 횟수를 저장할 변수
// 지폐가 지갑에 들어갈 수 있을 때까지 반복하여 접기
while (!isAble(wallet, bill)) {
setSize(bill); // 지폐 중 큰 쪽을 반으로 접음
result++; // 접을 때마다 카운트를 증가
}
return result; // 결과 반환: 지폐가 지갑에 들어갈 때까지 접은 횟수
}
// 지갑에 지폐가 들어갈 수 있는지 확인하는 메소드
public boolean isAble(int[] wallet, int[] bill) {
// 지갑의 최소, 최대 크기와 지폐의 최소, 최대 크기를 비교하여
// 지갑이 지폐를 담을 수 있으면 true 반환
return min(wallet) >= min(bill) && max(wallet) >= max(bill);
}
// 배열에서 최대값을 찾는 메소드
public int max(int[] arr) {
if (arr[0] > arr[1]) // 첫 번째 값이 더 크면 그 값 반환
return arr[0];
return arr[1]; // 두 번째 값이 더 크면 그 값 반환
}
// 배열에서 최소값을 찾는 메소드
public int min(int[] arr) {
if (arr[0] < arr[1]) // 첫 번째 값이 더 작으면 그 값 반환
return arr[0];
return arr[1]; // 두 번째 값이 더 작으면 그 값 반환
}
// 지폐의 큰 쪽을 반으로 접는 메소드
public void setSize(int[] bill) {
if (bill[0] > bill[1]) { // 첫 번째 지폐가 더 크면
bill[0] /= 2; // 반으로 접음
} else { // 두 번째 지폐가 더 크면
bill[1] /= 2; // 반으로 접음
}
}
}
728x90
'프로그래머스(Java) > Level 1' 카테고리의 다른 글
[프로그래머스] [PCCE 기출문제] 10번 / 공원 (0) | 2024.10.01 |
---|---|
[프로그래머스] [PCCP 기출문제] 1번 / 동영상 재생기 (3) | 2024.09.07 |
[프로그래머스] 성격 유형 검사하기 (0) | 2024.08.29 |
[프로그래머스] 바탕화면 정리 (0) | 2024.08.29 |
[프로그래머스] 개인정보 수집 유효기간 (0) | 2024.08.27 |