https://school.programmers.co.kr/learn/courses/30/lessons/131127
프로그래머스
SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
function solution(want, number, discount) {
let answer = 0;
// 원하는 제품과 수량을 Map으로 저장
const wantedItems = new Map();
for (let i = 0; i < want.length; i++) {
wantedItems.set(want[i], number[i]);
}
// 슬라이딩 윈도우로 10일씩 확인
let currentCount = new Map();
for (let i = 0; i < 10; i++) {
currentCount.set(discount[i], (currentCount.get(discount[i]) || 0) + 1);
}
for (let i = 0; i <= discount.length - 10; i++) {
// 원하는 제품 수량 일치 여부 체크
let isMatch = true;
for (let [item, count] of wantedItems) {
if (currentCount.get(item) !== count) {
isMatch = false;
break;
}
}
if (isMatch) {
answer++;
}
// 슬라이딩 윈도우로 한 칸씩 이동
if (i + 10 < discount.length) {
const removeItem = discount[i];
const addItem = discount[i + 10];
currentCount.set(removeItem, currentCount.get(removeItem) - 1);
currentCount.set(addItem, (currentCount.get(addItem) || 0) + 1);
}
}
return answer;
}
'코딩테스트 > LV. 2' 카테고리의 다른 글
LV2 :: 행렬의 곱셈 (0) | 2025.02.21 |
---|---|
LV.2 :: 괄호 회전하기 (0) | 2025.02.21 |
LV.2 :: 귤 고르기 (0) | 2025.02.21 |
LV.2 :: 주식 가격 (0) | 2024.10.21 |
LV.2 :: n^2 배열 자르기 (0) | 2024.10.21 |
댓글