https://school.programmers.co.kr/learn/courses/30/lessons/131127
풀이
Map의 자료구조를 사용하여 쉽게 풀 수 있는 문제이다.
1. Map에 필요한 물건을 key, 개수를 value로 생성해준다.
2. discount의 9일전까지 반복을 해준다 (그 이상은 마트에 등록을해도 10일이 안채워지기 때문)
3. 현재 마트에서 할인하는 물품이 wantCount에 없는 물품이라면 다음날로 이동 (결국 모든 물품을 사지 못하기때문에)
4. 위까지 통과하였다면 map에서 모든 물품을 구매하였으면 (모든 value값이 0이라면) result 증가
import java.util.HashMap;
import java.util.Map;
class Solution {
public int solution(String[] want, int[] number, String[] discount) {
int result = 0;
Map<String, Integer> wantCount = new HashMap<>();
first:
for (int i = 0; i < discount.length - 9; i++) {
for (int k = 0; k < want.length; k++) wantCount.put(want[k], number[k]);
for (int j = i; j < i + 10; j++) {
if (!wantCount.containsKey(discount[j])) continue first;
wantCount.put(discount[j], wantCount.get(discount[j]) - 1);
}
boolean check = wantCount.values().stream().anyMatch(num -> num > 0);
if(!check) result++;
}
return result;
}
}
'Algorithm > 프로그래머스' 카테고리의 다른 글
[프로그래머스] 택배상자(JAVA) (0) | 2023.07.04 |
---|---|
[프로그래머스] 호텔 대실 (0) | 2023.07.04 |
[프로그래머스] 카카오 기출 - 양궁대회 (0) | 2023.07.04 |
[프로그래머스] 혼자 놀기의 달인 (0) | 2023.06.20 |
[프로그래머스] 카카오 기출 - n진수 게임 (0) | 2023.06.20 |