[Programmers] PCCE 기출문제 9번 / 지폐 접기 - LEVEL 1
접근
- 구현
풀이
이중 우선순위 큐를 찾으러 가면서 프로그래머스에 PCCE와 PCCP 기출문제가 업데이트된 것을 보고 가져왔다. PCCE 1~8번은 너무 간단한 문제들이라 패스하고 9, 10번을 푼 뒤 PCCP로 넘어갈 생각이다. 우선 이 문제는 지폐를 접어서 지갑에 넣는 문제로 구름, 프로그래머스, 백준 중에 어디서 풀어봤던 문제인 거 같으나 기억이 잘 나지 않는다. 특별한 알고리즘이 필요한 문제도 아니고 간단한 구현 문제로 어려운 0 레벨 쉬운 1 레벨 정도가 되는 거 같다.
public static int solution(int[] wallet, int[] bill) {
int answer = 0;
while (!checkSize(wallet, bill)) {
fold(wallet, bill);
answer++;
}
return answer;
}
오랜만에 프로그래머스에서 문제를 푸는데 역시 다른 사이트에 여러모로 참 편리한 거 같다. 값을 입력받는 과정도 없고 제출하기 전 코드를 실행해 보고 출력문도 찍을 수 있고 테스트케이스 추가도 간편하고 처음 코딩테스트 문제를 풀기 시작했던 게 프로그래머스이다 보니 IDE를 사용하지 않고 사이트에서 바로 풀 수 있었던 거 같다. 그땐 남들도 다 그렇게 푸는 줄 알았는데 데브코스 코딩테스트를 보고 난 뒤 IDE 없이 사이트에서 바로 풀었다고 하니 놀라는 사람들이 많았다. 문제로 돌아가서 지폐가 지갑에 들어갈 수 있는 크기가 될 때까지 접어야 하므로 while문의 조건으로 사용해 주었다. 지폐가 지갑에 들어가지 않는다면 지폐를 접어주고 접는 횟수를 늘려줬다.
private static void fold(int[] wallet, int[] bill) {
if (bill[0] > bill[1]) {
bill[0] /= 2;
} else {
bill[1] /= 2;
}
}
지폐를 접는 메서드로 문제를 제대로 안 읽고 풀었다가 삽질을 했다. 지폐를 접을 때 항상 긴 쪽을 접는 조건을 모르고 필요 없는 조건들을 덕지덕지 붙여서 풀었었는데 알고 보니 긴 쪽을 접으면 되는 거였다.
private static boolean checkSize(int[] wallet, int[] bill) {
Arrays.sort(wallet);
Arrays.sort(bill);
return bill[0] <= wallet[0] && bill[1] <= wallet[1];
}
마지막으로 지폐가 지갑에 들어가는지 체크해 주는 메서드이다. 정렬을 통해 지갑에 들어갈 수 작은 건 작은 것끼리 큰 건 큰 것끼리 매칭을 해주면 90도 돌렸을 때와 기본 상태를 다 체크할 수 있다.
전체 코드
import java.util.Arrays;
class Solution {
public static int solution(int[] wallet, int[] bill) {
int answer = 0;
Arrays.sort(wallet);
Arrays.sort(bill);
while (!checkSize(wallet, bill)) {
fold(wallet, bill);
answer++;
}
return answer;
}
private static void fold(int[] wallet, int[] bill) {
if (bill[0] > bill[1]) {
bill[0] /= 2;
} else {
bill[1] /= 2;
}
}
private static boolean checkSize(int[] wallet, int[] bill) {
Arrays.sort(wallet);
Arrays.sort(bill);
return bill[0] <= wallet[0] && bill[1] <= wallet[1];
}
}
'알고리즘 > 코딩테스트-Programmers' 카테고리의 다른 글
[Programmers] PCCP 기출문제 2번 / 퍼즐 게임 챌린지 Java (1) | 2024.09.16 |
---|---|
[Programmers] PCCP 기출문제 1번 / 동영상 재생기 JAVA (0) | 2024.09.15 |
[Programmers] 과제 진행하기 JAVA (0) | 2024.08.18 |
[Programmers] PCCP 모의고사 #2 체육대회 JAVA (0) | 2024.06.30 |
[Programmers] PCCP 모의고사 #1 외톨이 알파벳 JAVA (0) | 2024.06.29 |