시도한 풀이
10일씩 끊어서 확인하기
function solution(want, number, discount) {
let answer = 0;
let obj = {};
let obj2 = {};
let count = 0;
for (let i = 0; i < want.length; i++) {
obj[want[i]] = number[i];
}
for (let i = 0; i < discount.length - 9; i++) {
obj2 = {};
count = 0;
for (let j = 0; j < 10; j++) {
if (obj2[discount[i + j]]) {
obj2[discount[i + j]] += 1;
} else {
obj2[discount[i + j]] = 1;
}
}
for (let k = 0; k < want.length; k++) {
if(obj[want[k]] === obj2[want[k]]) count++;
}
if (count === want.length) answer++;
}
return answer;
}
[어려웠던 점]
아이디어는 나쁘지 않았는데 이게 10일까지 & discount가
최대 10만이라 O(N*M) 떠도 최대 100만이라 시간 초과 안 뜬 거지
더 컸으면 시간 초과임.
[새롭게 알게된 점]
내 코드와 책 코드를 비교해봤을 때
일일이 count를 세는 대신, 두 객체를 직접 비교하는 함수를 사용하는 것이 더 효율적