본문 바로가기

알고리즘 정리

빈도 수 찾기

Q.2개의 배열을 허용하는 same이라는 함수를 작성하십시오.

배열의 모든 값이 두 번째 배열에 해당하는 값을 가지면 참을 반환해야 합니다.

=> 첫 번째 배열의 인자 값의 제곱이 두 번째 배열의 인자 값으로 있다면 참을 반환해라.
 

 

function same(arr1,arr2){
  if(arr1.length !== arr2.length) return false  // 1.배열의 length가 같은 지 확인하자.

  let frequency1 = {};
  let frequency2 = {};   // 2.값을 넣어줄 빈 객체를 만들자.

  for(let val of arr1){
    frequency1[val]=(frequency1[val] || 0) +1;
  } 
  // 3.frequency1객체에 arr1을 돌면서 key값을 넣어주는데 그에 해당하는 value값이 없다면
    +1, 있다면 있는 값에서 +1
  
  for(let val of arr2){
    frequency2[val]=(frequency2[val] || 0 )+1;
  }
  console.log(frequency1,frequency2);       //중간 정검


  for(let key in frequency1){
    if(!(key**2 in frequency2)){return false;}
   	if(frequency1[key]!==frequency2[key**2]) {return false};
  }     // 4.한 객체 내에 있는 key값의 제곱이 두번째 객체key값인지 확인. 없다면 false
  
   return true;
}
  



same([1, 2, 3, 2, 5], [9, 1, 4, 4, 25]);
{1: 1, 2: 2, 3: 1, 5: 1} {1: 1, 4: 2, 9: 1, 25: 1}
true

 빈도수와 true 반환😎

 

아 첨에 자꾸 값 구하니까 key값이 안정해져있다고 나오길래 뭐가 문제지 하고 계속 찾았는데 안나와서 

인내심 검사하는 줄 알았는데 괄호 하나 때문이였다... 왜 그렇게 그런게 눈에 안띄고난리 ㅠ

 어쨋든 잘 해결!

'알고리즘 정리' 카테고리의 다른 글

기본 재귀함수  (0) 2023.05.24
Queue 자료구조  (0) 2023.05.02
스택자료구조 사용한 후위식  (0) 2023.05.01
해쉬 알고리즘  (1) 2023.04.20
슬라이딩 윈도우  (0) 2023.04.18