관리 메뉴

Daehyunii's Dev-blog

ν•™κΈ‰ 회μž₯(νš¨μœ¨μ„±-해쉬) λ³Έλ¬Έ

πŸ“š Language & CS knowledge/Algorithm (κΈ°μ΄ˆλ¬Έμ œν’€μ΄)

ν•™κΈ‰ 회μž₯(νš¨μœ¨μ„±-해쉬)

Daehyunii 2022. 9. 2. 17:48

문제(좜처 : μΈν”„λŸ° μžλ°”μŠ€ν¬λ¦½νŠΈ μ•Œκ³ λ¦¬μ¦˜ λ¬Έμ œν’€μ΄ κ°•μ˜, μ •λ³΄μ˜¬λ¦Όν”Όμ•„λ“œ)

 

ν•™κΈ‰ 회μž₯을 λ½‘λŠ”λ° ν›„λ³΄λ‘œ 기호 A, B, C, D, E 후보가 등둝을 ν–ˆμŠ΅λ‹ˆλ‹€. νˆ¬ν‘œμš©μ§€μ—λŠ” 반 학생듀이 μžκΈ°κ°€ μ„ νƒν•œ ν›„λ³΄μ˜ 기호(μ•ŒνŒŒλ²³)κ°€ μ“°μ—¬μ Έ 있으며 μ„ μƒλ‹˜μ€ κ·Έ 기호λ₯Ό λ°œν‘œν•˜κ³  μžˆμŠ΅λ‹ˆλ‹€. μ„ μƒλ‹˜μ˜ λ°œν‘œκ°€ λλ‚œ ν›„ μ–΄λ–€ 기호의 후보가 ν•™κΈ‰ 회μž₯이 λ˜μ—ˆλŠ”μ§€ 좜λ ₯ν•˜λŠ” ν”„λ‘œκ·Έλž¨μ„ μž‘ μ„±ν•˜μ„Έμš”. λ°˜λ“œμ‹œ ν•œ λͺ…μ˜ ν•™κΈ‰νšŒμž₯이 μ„ μΆœλ˜λ„λ‘ νˆ¬ν‘œκ²°κ³Όκ°€ λ‚˜μ™”λ‹€κ³  κ°€μ •ν•©λ‹ˆλ‹€.

 

β–£ μž…λ ₯μ„€λͺ…
첫 μ€„μ—λŠ” 반 ν•™μƒμˆ˜ N(5<=N<=50)이 μ£Όμ–΄μ§‘λ‹ˆλ‹€.
두 번째 쀄에 N개의 νˆ¬ν‘œμš©μ§€μ— μ“°μ—¬μ Έ 있던 각 ν›„λ³΄μ˜ κΈ°ν˜Έκ°€ μ„ μƒλ‹˜μ΄ λ°œν‘œν•œ μˆœμ„œλŒ€λ‘œ λ¬Έμžμ—΄λ‘œ μž…λ ₯λ©λ‹ˆλ‹€.

β–£ 좜λ ₯μ„€λͺ…
ν•™κΈ‰ 회μž₯으둜 μ„ νƒλœ 기호λ₯Ό 좜λ ₯ν•©λ‹ˆλ‹€.

 

β–£ μž…λ ₯예제 1
15

BACBACCACCBDEDE

 

β–£ 좜λ ₯예제 1

C

 

Tip

해쉬 맡을 ν™œμš©ν•΄μ„œ ν‘ΈλŠ”κ²Œ κ°€μž₯ μ‰½κ²Œ ν’€ 수 μžˆλ‹€.

 

λ¬Έμ œν’€μ΄

//κ°•μ˜ λ“£κ³  λ‚΄κ°€ μž‘μ„±ν•œ μ •λ‹΅
function solution(str){
    let answer;
    let sH = new Map();

    for(let x of str){
        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 string="BACBACCACCBDEDE";
console.log(solution(string));