본문 바로가기

알고리즘 정리

해쉬 알고리즘

Q. 후보 A,B,C,D,E 가 있다.  투표 용지에 쓰여있던 기호를 순서대로 나열했을때 선출된 기호 출력

A.

function solution(s) {
  let answer;
  let sH = new Map();
  for (let x of s) {
    if (sH.has(x)) sH.set(x, sH.get(x) + 1);
    else sH.set(x, 1);
  }
  let max = Number.MIN_SAFE_INTEGER;
  for (let [key, val] of sH) {
    if (val > max) {
      max = val;
      answer = key;
    }
  }
  return answer;
}

let str = 'BACBACCACCBDEDE';
console.log(solution(str));

[코드 순서]

  • new Map() : key가 있는 데이터를 저장할 수 있다 예를 들면math:1 이런식.
    - sH라는 변수에 새로운 Map 생성자 할당
  • map.has(key): sH안에 기존의 x가 존재하는지 확인
  • 없을경우 , sH.set(key,value)를 사용 : key를 이용해 value를 저장, 처음이므로 1 추가
  • 있을경우, sH.get(x) :  key가 x인 value값을 반환, 기존에 있다면 카운팅을 해줘야하므로 +1 추가 그리고 나서 그 값을  set해주기
  • for문으로 [key,value]하나씩 확인
  • 만약 vale값이 기준이되는 max보다 크다면, max=value
  • 구해야하는 값은 key값이므로(A,B,C...) 가장 큰 value의 key return 

 

 

 

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

기본 재귀함수  (0) 2023.05.24
Queue 자료구조  (0) 2023.05.02
스택자료구조 사용한 후위식  (0) 2023.05.01
슬라이딩 윈도우  (0) 2023.04.18
빈도 수 찾기  (0) 2022.11.14