๐Ÿ”Žํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค - ์™„์ฃผํ•˜์ง€ ๋ชปํ•œ ์„ ์ˆ˜

๋ฐ•๋ฏผ์šฐยท2023๋…„ 7์›” 8์ผ
1
post-custom-banner

๋ฌธ์ œ : https://school.programmers.co.kr/learn/courses/30/lessons/42576

์นดํ…Œ๊ณ ๋ฆฌ : ํ•ด์‹œ

์ถœ์ฒ˜: ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค ์ฝ”๋”ฉํ…Œ์ŠคํŠธ ๊ณ ๋“์  Kit


โœ๏ธ ๋‚ด ํ’€์ด

ํ•œ ๋ช…์˜ ์„ ์ˆ˜๋ฅผ ์ œ์™ธํ•˜๊ณ , ๋ชจ๋“  ์„ ์ˆ˜๋“ค์ด ์™„์ฃผํ•˜์˜€๊ธฐ ๋•Œ๋ฌธ์— participant ๋ฐฐ์—ด์˜ ๊ธธ์ด๋Š” completion ๋ฐฐ์—ด์˜ ๊ธธ์ด๋ณด๋‹ค 1 ํด ๊ฒƒ์ด๋‹ค.

๋˜ํ•œ, ์ฐธ๊ฐ€์ž ์ค‘์—๋Š” ๋™๋ช…์ด์ธ์ด ์žˆ์„ ์ˆ˜๋„ ์žˆ๊ธฐ ๋•Œ๋ฌธ์—, ๊ฐ ์ฐธ๊ฐ€์ž๋“ค์˜ ์ด๋ฆ„์„ map์˜ key๋กœ ์„ค์ •ํ•˜๊ณ  ์ด๋ฆ„์— ํ•ด๋‹นํ•˜๋Š” ์ฐธ๊ฐ€์ž์˜ ์ˆ˜๋ฅผ value๋กœ ์„ค์ •ํ•ด์ฃผ์—ˆ๋‹ค.

paricipant ๋ฐฐ์—ด์„ ์ˆœํšŒํ•˜๋ฉฐ map์—์„œ ๊ฐ ์ฐธ๊ฐ€์ž ์ด๋ฆ„ ๊ฐ’ key์— ๋Œ€ํ•œ value๋ฅผ 1์”ฉ ์ฆ๊ฐ€์‹œํ‚ค๊ณ , completion ๋ฐฐ์—ด์„ ์ˆœํšŒํ•˜๋ฉฐ map์—์„œ ๊ฐ ์ฐธ๊ฐ€์ž ์ด๋ฆ„ ๊ฐ’ key์— ๋Œ€ํ•œ value๋ฅผ 1์”ฉ ๊ฐ์†Œ์‹œํ‚ค๋ฉด, ๊ฒฐ๊ตญ ๋งˆ์ง€๋ง‰์— value๊ฐ€ 1์ธ key ๊ฐ’์ด ๋‹ต์ด ๋œ๋‹ค.


๐Ÿ—’๏ธ ๋‚ด ์ฝ”๋“œ

function solution(participant, completion) {
    let map = new Map();
    
    participant.forEach((name) => {
        if(map.has(name)){
            map.set(name, map.get(name)+1);
        }
        else
            map.set(name,1);
    })
    
    completion.forEach((name) => {
        map.set(name, map.get(name)-1);
    })
    
    for(let [key, value] of map){
        if(value==1){
            return key;
        }
    }
}

๐Ÿ“Œ ๊ฐœ์„  ๋ฐฉ์•ˆ

for(let i = 0; i < participant.length; i++) {
	let a = participant[i], 
		b = completion[i];

participant ๋ฐฐ์—ด์˜ ๊ธธ์ด๊ฐ€ completion ๋ฐฐ์—ด์˜ ๊ธธ์ด๋ณด๋‹ค 1 ํฌ๋ฏ€๋กœ, ๋‹ค์Œ๊ณผ ๊ฐ™์ด ํ•จ๊ป˜ ๋ฃจํ”„๋ฅผ ๋Œ ์ˆ˜ ์žˆ๋‹ค.


map.set(a, (map.get(a) || 0) + 1);
map.set(b, (map.get(b) || 0) - 1);

๋‹ค์Œ๊ณผ ๊ฐ™์ด, key์— ํ•ด๋‹นํ•˜๋Š” ๊ฐ’์ด ์—†์„ ๋•Œ์˜ ์ฒ˜๋ฆฌ๋ฅผ ๋” ๊ฐ„๊ฒฐํ•˜๊ฒŒ ํ•ด์ค„ ์ˆ˜ ์žˆ๋‹ค.

profile
๊พธ์ค€ํžˆ, ๊นŠ๊ฒŒ
post-custom-banner

0๊ฐœ์˜ ๋Œ“๊ธ€