1. 문제 해결 패턴 소개

2. 빈도 수 세기 패턴 (Frequency Counter)
- 자바스크립트 객체 사용해 다양한 값과 빈도를 수집할 쓰이는 패턴 
 
- 여러 데이터와 입력값이 서로 비슷한 값으로 구성되어 있는지 값이 다른 값에 포함되는지 여부를 비교할 때 등
 
예시 - 2개의 배열을 허용하는 same 함수 작성, 배열의 모든 값이 두 번째 배열에 해당하는 값을 가지면 true 반환
단순 접근법
function same(arr1, arr2){
  
  let answer = false
  if(arr1.length !== arr2.length) return answer
  for(let i=0; i<arr2.length; i++){
    if(arr1.some(el => el*el===arr2[i])) answer = true
    else answer = false
    
    
  }
  return answer
}
same([1,2,3] , [4,1,9])
same([1,2,3] , [1,9])
same([1,2,1] , [4,1,1])
- 이러한 접근법은 O(N^2), 제곱시간이 사용되어 순진한 접근법으로 가능한 않는게 좋다
 
빈도 카운터 패턴 접근법
- loop를 두개로 나눠 중첩된 개별 루프가 아닌 선형시간인 O(N)으로 수정되도록 하기
 
function sameForFrequency(arr1, arr2){
  
  let frequencyCounter1 ={}
  let frequencyCounter2 ={}
  for(let val of arr1){
      frequencyCounter1[val] = (frequencyCounter1[val] || 0)   + 1
  }
 for(let val of arr2){
      frequencyCounter2[val] = (frequencyCounter2[val] || 0)   + 1
 }
             console.log(frequencyCounter1)
           console.log(frequencyCounter2)
  for(let key in frequencyCounter1){
    console.log(key)
         if(!(key ** 2 in frequencyCounter2)){
           
           return false
         }
     
     
     
   } 
  
  return true
}
sameForFrequency([1,2,3,2,5],[9,1,4,4,25])