solution(["banana", "apple", "rice", "pork", "pot"], [3, 2, 2, 2, 1], ["chicken", "apple", "apple", "banana", "rice", "apple", "pork", "banana", "pork", "rice", "pot", "banana", "apple", "banana"]) // 3
solution(["apple"], [10], ["banana", "banana", "banana", "banana", "banana", "banana", "banana", "banana", "banana", "banana"]) // 0
function solution(want, number, discount) {
let answer = 0;
// 10개씩 연속된 상품을 검사해야 하므로 discount 배열의 길이 - 9를 범위로 지정
for(let i = 0; i < discount.length - 9; i++) {
let j;
// 원하는 제품의 배열 인덱스를 가져오기 위해 사용
for(j = 0; j < want.length; j++) {
let check = 0;
// 현재 검사 중인 10개의 상품이 원하는 상품 중 몇 개를 포함하는지를 확인
for(let q = i; q < i + 10; q++) {
if(discount[q] === want[j]) {
check++;
}
}
// 10개의 상품 중 원하는 제품의 개수를 충족하지 못하면 for문을 멈춤
if(check < number[j]) {
break;
}
}
// 모든 원하는 제품의 개수를 만족하는 경우
if(j === want.length) {
answer++;
}
}
return answer;
}
출처: 프로그래머스
이 글을 통해 많은 것을 배웠습니다.