csct3434
[level 2] 할인 행사 - 131127 본문
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
import java.util.HashMap;
import java.util.Map;
class Solution {
public int solution(String[] want, int[] number, String[] discount) {
int answer = 0;
Map<String, Integer> wantsCount = new HashMap<>();
for (int i = 0; i < want.length; i++) {
wantsCount.put(want[i], number[i]);
}
HashMap<String, Integer> discountsCount = new HashMap<>();
for (int i = 0; i < 10; i++) {
Integer count = discountsCount.getOrDefault(discount[i], 0);
discountsCount.put(discount[i], count + 1);
}
for (int i = 0; i + 10 <= discount.length; i++) {
boolean impossible = wantsCount.keySet()
.stream()
.anyMatch(item -> wantsCount.get(item) > discountsCount.getOrDefault(item, 0));
if (!impossible) {
answer++;
}
if (i + 10 < discount.length) {
Integer oldestItemCount = discountsCount.get(discount[i]);
discountsCount.put(discount[i], oldestItemCount - 1);
Integer nextItemCount = discountsCount.getOrDefault(discount[i + 10], 0);
discountsCount.put(discount[i + 10], nextItemCount + 1);
}
}
return answer;
}
}
'프로그래머스' 카테고리의 다른 글
[level 2] 숫자 카드 나누기 - 135807 (0) | 2024.02.29 |
---|---|
[level 2] 우박수열 정적분 - 134239 (0) | 2024.02.29 |
[level 2] 피로도 - 87946 (0) | 2024.02.29 |
[level 2] n^2 배열 자르기 - 87390 (0) | 2024.02.29 |
[level 2] 전력망을 둘로 나누기 - 86971 (1) | 2024.02.29 |