https://school.programmers.co.kr/learn/courses/30/lessons/131127
프로그래머스
SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
class Solution {
public int solution(String[] want, int[] number, String[] discount) {
int answer = 0;
int day = 0;
while (day <= discount.length - 10) { // 10일 연속 체크이므로 -10 적용
int[] daysNum = number.clone(); // 원본 배열 손상 방지를 위해 깊은 복사
int cnt = 0;
for (int i = day; i < day + 10; i++) { // 10일 동안만 탐색
for (int j = 0; j < want.length; j++) {
if (want[j].equals(discount[i])) {
daysNum[j] -= 1;
}
}
}
// 모든 상품이 정확히 0이 되었는지 확인
boolean allMatched = true;
for (int i = 0; i < daysNum.length; i++) {
if (daysNum[i] > 0) { // 하나라도 0보다 크면 실패
allMatched = false;
break;
}
}
if (allMatched) {
answer++;
}
day++;
}
return answer;
}
}
/*
1. 첫째날부터 반복문을 돌려 10일안에 원하는 모든 물건을 구매할 수 있는지 여부를 구함
2. 모두 구매할 수 있으면 카운트를 올림
*/
++ 해시맵 또는 슬라이딩 윈도우를 활용한 풀이도 가능
'코딩테스트 > 코딩테스트 문제풀이' 카테고리의 다른 글
| [Java] 프로그래머스 <최댓값과 최솟값> (0) | 2025.02.15 |
|---|---|
| [Java] 프로그래머스 <영어 끝말잇기> (0) | 2025.02.15 |
| [Java] 프로그래머스 <N개의 최소공배수> (0) | 2025.02.11 |
| [Java] 프로그래머스 <귤 고르기> (0) | 2025.02.09 |
| [Java] 프로그래머스 <K번째수> (0) | 2025.02.05 |