- discount를 10개씩 자른다.
- 이 자른 것을 하나씩 체크
-> want에 있다면, num[want의 인덱스]를 찾아 1을 빼준다. (이때 단, num은 얕은 복사를 통해 하나 만들어둔다, 이후에도 써야되기 때문)- 그 후에 얕은 복사를 통해 만든 num에 값 중에 모두 0 이하이면 answer++
function solution(want, number, discount) {
var answer = 0;
var exNumber;
var disCountArr;
for(var i = 0;i<discount.length-9;i++){
//10개 마다 짜르기
disCountArr = discount.slice(i,i+10);
//number를 계속 초기화(얕은 복사)
exNumber = [...number];
disCountArr.forEach((element)=>{
//want에 그 값이 있다면
if(want.indexOf(element)!==-1){
exNumber[want.indexOf(element)]--;
}
})
//값 중에 0이 있는지 확인 하는 변수 true=> 모두 0이하, false=> 0보다 큰 값이 있음.
var check = true;
exNumber.forEach((element)=>{
//남아 있다면
if(element>0){
check = false;
}
})
//모든 값이 0 이하라면,
if(check===true){
answer++;
}
}
return answer;
}
이 문제는 쉽게 풀어냈지만 처음에 얕은 복사
를 하지 않아 문제가 틀렸다. 깊은 복사로 인해 값이 중복으로 빼지는 현상이 발생했고, 이러한 복사 부분을 고려해야 된다는 것을 다시 한번 상기 시켜주는 문제였다.