๐Ÿ’ป์šฉ๋‡ฝ ๊ฐœ๋ฐœ ๋…ธํŠธ๐Ÿ’ป
article thumbnail
๋ฐ˜์‘ํ˜•

์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค ์™„์ฃผํ•˜์ง€ ๋ชป ํ•œ ์„ ์ˆ˜ ๋ฌธ์ œ ํ’€์ด

๐Ÿ“– ๋“ค์–ด๊ฐ€๋ฉฐ

์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋กœ ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค์˜ ํ•ด์‰ฌ(Hash) ์ž๋ฃŒ๊ตฌ์กฐ๋ฅผ ์ด์šฉํ•˜๋Š” '์™„์ฃผํ•˜์ง€ ๋ชปํ•œ ์„ ์ˆ˜' ๋ฌธ์ œ ํ’€์ด๋ฅผ ํ•˜๊ฒ ๋‹ค.

ํ•ด๋‹น ๋ฌธ์ œ๋Š” ํ•ด์‰ฌ(Hash)๋ฅผ ํ™œ์šฉํ•˜์ง€ ์•Š๊ณ ๋„ ํ’€ ์ˆ˜ ์žˆ์—ˆ์ง€๋งŒ, ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค์—์„œ ํ•ด์‰ฌ(Hash) ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋ฌธ์ œ ํ’€์ด๋กœ ๋ถ„๋ฅ˜๋ฅผ ํ•ด๋†“์•˜๊ธฐ ๋•Œ๋ฌธ์— ํ•ด์‰ฌ(Hash) ์ž๋ฃŒ๊ตฌ์กฐ๋ฅผ ์ด์šฉํ•ด์„œ ๋ฌธ์ œ๋ฅผ ํ’€์—ˆ๋‹ค.

โ“ ๋ฌธ์ œ 

๋ฌธ์ œ ์„ค๋ช…

์ˆ˜๋งŽ์€ ๋งˆ๋ผํ†ค ์„ ์ˆ˜๋“ค์ด ๋งˆ๋ผํ†ค์— ์ฐธ์—ฌํ•˜์˜€์Šต๋‹ˆ๋‹ค. ๋‹จ ํ•œ ๋ช…์˜ ์„ ์ˆ˜๋ฅผ ์ œ์™ธํ•˜๊ณ ๋Š” ๋ชจ๋“  ์„ ์ˆ˜๊ฐ€ ๋งˆ๋ผํ†ค์„ ์™„์ฃผํ•˜์˜€์Šต๋‹ˆ๋‹ค.
๋งˆ๋ผํ†ค์— ์ฐธ์—ฌํ•œ ์„ ์ˆ˜๋“ค์˜ ์ด๋ฆ„์ด ๋‹ด๊ธด ๋ฐฐ์—ด participant์™€ ์™„์ฃผํ•œ ์„ ์ˆ˜๋“ค์˜ ์ด๋ฆ„์ด ๋‹ด๊ธด ๋ฐฐ์—ด completion์ด ์ฃผ์–ด์งˆ ๋•Œ, ์™„์ฃผํ•˜์ง€ ๋ชปํ•œ ์„ ์ˆ˜์˜ ์ด๋ฆ„์„ return ํ•˜๋„๋ก solution ํ•จ์ˆ˜๋ฅผ ์ž‘์„ฑํ•ด์ฃผ์„ธ์š”.

์ œํ•œ์‚ฌํ•ญ

  • ๋งˆ๋ผํ†ค ๊ฒฝ๊ธฐ์— ์ฐธ์—ฌํ•œ ์„ ์ˆ˜์˜ ์ˆ˜๋Š” 1๋ช… ์ด์ƒ 100,000๋ช… ์ดํ•˜์ž…๋‹ˆ๋‹ค.
  • completion์˜ ๊ธธ์ด๋Š” participant์˜ ๊ธธ์ด๋ณด๋‹ค 1 ์ž‘์Šต๋‹ˆ๋‹ค.
  • ์ฐธ๊ฐ€์ž์˜ ์ด๋ฆ„์€ 1๊ฐœ ์ด์ƒ 20๊ฐœ ์ดํ•˜์˜ ์•ŒํŒŒ๋ฒณ ์†Œ๋ฌธ์ž๋กœ ์ด๋ฃจ์–ด์ ธ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ์ฐธ๊ฐ€์ž ์ค‘์—๋Š” ๋™๋ช…์ด์ธ์ด ์žˆ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ž…์ถœ๋ ฅ ์˜ˆ

participant completion return
["leo", "kiki", "eden"] ["eden", "kiki"] "leo"
["marina", "josipa", "nikola", "vinko", "filipa"] ["josipa", "filipa", "marina", "nikola"] "vinko"
["mislav", "stanko", "mislav", "ana"] ["stanko", "ana", "mislav"] "mislav"

์ž…์ถœ๋ ฅ ์˜ˆ ์„ค๋ช…

์˜ˆ์ œ #1
"leo"๋Š” ์ฐธ์—ฌ์ž ๋ช…๋‹จ์—๋Š” ์žˆ์ง€๋งŒ, ์™„์ฃผ์ž ๋ช…๋‹จ์—๋Š” ์—†๊ธฐ ๋•Œ๋ฌธ์— ์™„์ฃผํ•˜์ง€ ๋ชปํ–ˆ์Šต๋‹ˆ๋‹ค.
์˜ˆ์ œ #2
"vinko"๋Š” ์ฐธ์—ฌ์ž ๋ช…๋‹จ์—๋Š” ์žˆ์ง€๋งŒ, ์™„์ฃผ์ž ๋ช…๋‹จ์—๋Š” ์—†๊ธฐ ๋•Œ๋ฌธ์— ์™„์ฃผํ•˜์ง€ ๋ชปํ–ˆ์Šต๋‹ˆ๋‹ค.
์˜ˆ์ œ #3
"mislav"๋Š” ์ฐธ์—ฌ์ž ๋ช…๋‹จ์—๋Š” ๋‘ ๋ช…์ด ์žˆ์ง€๋งŒ, ์™„์ฃผ์ž ๋ช…๋‹จ์—๋Š” ํ•œ ๋ช…๋ฐ–์— ์—†๊ธฐ ๋•Œ๋ฌธ์— ํ•œ ๋ช…์€ ์™„์ฃผํ•˜์ง€ ๋ชปํ–ˆ์Šต๋‹ˆ๋‹ค.

๐Ÿ’ก ํ’€์ด

๋ฌธ์ œ๋ฅผ ์ž˜ ์ฝ์–ด๋ณด๋ฉด '๋‹จ ํ•œ ๋ช…์˜ ์„ ์ˆ˜๋ฅผ ์ œ์™ธํ•˜๊ณ ๋Š” ๋ชจ๋‘ ์™„์ฃผํ•˜์˜€์Šต๋‹ˆ๋‹ค.'๋ผ๋Š” ๋ฌธ์žฅ์ด ์žˆ๋‹ค.

์—ฌ๊ธฐ์„œ return ๊ฐ’์€ ๋ฌด์กฐ๊ฑด 1๋ช…์˜ ์„ ์ˆ˜๋งŒ return์ด ๋œ๋‹ค๋Š” ๊ฑธ ์•Œ ์ˆ˜ ์žˆ๋‹ค.

participant ๋ฐฐ์—ด์ด ๊ฐ–๊ณ  ์žˆ๋Š” ๊ฐ’(์ฐธ๊ฐ€์ž)๋“ค ์ค‘์—์„œ completion ๋ฐฐ์—ด์˜ ๊ฐ’ ์ค‘์— ์—†๋Š” ๊ฐ’(์ฐธ๊ฐ€์ž)์„ ๊ณจ๋ผ์„œ ์ฐพ์•„๋‚ด๋ฉด ๋œ๋‹ค.

๊ทธ๋ฆฌ๊ณ  ์ฃผ์˜ํ•  ์ ์€ ์ œํ•œ์‚ฌํ•ญ์— '์ฐธ๊ฐ€์ž ์ค‘์—๋Š” ๋™๋ช…์ด์ธ์ด ์žˆ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.'๋ผ๋Š” ์ œํ•œ์‚ฌํ•ญ์ด ๋ช…์‹œ๋˜์–ด์žˆ๋‹ค.

์ด ์ ๋“ค์„ ์œ ์˜ํ•˜์—ฌ ๋ฌธ์ œ๋ฅผ ํ’€์–ด๋ดค๋‹ค.

ํ’€์ด ์ฝ”๋“œ

function solution(participant, completion) {
  let answer = '';
  const hash = new Map();

  participant.forEach((name) => hash.set(name, (hash.get(name) || 0) + 1));
  completion.forEach((name) => hash.set(name, hash.get(name) - 1));

  for (const [key, value] of hash) {
    if (value > 0) {
      answer = key;
    }
  }

  return answer;
}

ํ•ด์‰ฌ(Hash) ์ž๋ฃŒ๊ตฌ์กฐ๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด hash๋ผ๋Š” ๋ณ€์ˆ˜์— Map ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•ด ์ฃผ์—ˆ๋‹ค.

Object Literal์„ ์‚ฌ์šฉํ•  ์ˆ˜๋„ ์žˆ์ง€๋งŒ Map ์ž์ฒด๊ฐ€ ํ•ด์‰ฌ(Hash) ์ž๋ฃŒ๊ตฌ์กฐ๋ฅผ ์œ„ํ•ด ๋งŒ๋“ค์–ด์ง„ ์กด์žฌ์ด๊ธฐ ๋•Œ๋ฌธ์— Map์„ ํ™œ์šฉํ•˜๋Š” ๊ฒŒ ์กฐ๊ธˆ ๋” ๋ณธ์งˆ์ ์œผ๋กœ ๋งž๋‹ค๊ณ  ์ƒ๊ฐํ•˜์—ฌ Map์„ ์‚ฌ์šฉํ–ˆ๋‹ค.

 

participant ๋ฐฐ์—ด์„ ์ˆœํšŒํ•˜๋ฉด์„œ ์œ„์—์„œ ์ƒ์„ฑํ•œ

hash์— key: ์ฐธ๊ฐ€์ž ์ด๋ฆ„, value: ์ด๋ฏธ ์ถ”๊ฐ€ํ•œ key(์ฐธ๊ฐ€์ž)๊ฐ€ ์žˆ๋‹ค๋ฉด ํ•ด๋‹น ๊ฐ’์— +1 ์•„๋‹ˆ๋ฉด 0 + 1์„ ํ•ด์ฃผ์—ˆ๋‹ค.

value๋ฅผ ์ด๋ ‡๊ฒŒ ์ถ”๊ฐ€ํ•˜๋Š” ์ด์œ ๋Š” ์ œํ•œ์‚ฌํ•ญ์—์„œ ๋™๋ช…์ด์ธ์ด ์žˆ์„ ์ˆ˜ ์žˆ๋‹ค๊ณ  ํ–ˆ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

 

๊ทธ๋ฆฌ๊ณ  completion ๋ฐฐ์—ด์„ ์ˆœํšŒํ•˜๋ฉด์„œ ํ•ด๋‹น key(์ฐธ๊ฐ€์ž)์˜ value๋ฅผ -1 ํ•ด์ฃผ์—ˆ๋‹ค.

 

์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ์™„์ฃผํ•œ ์„ ์ˆ˜๋“ค์˜ value๋Š” 0์ด ๋  ๊ฒƒ์ด๊ณ , ์™„์ฃผํ•˜์ง€ ๋ชป ํ•œ ์„ ์ˆ˜์˜ value๋Š” 0๋ณด๋‹ค ํฐ ๊ฐ’์„ ๊ฐ€์ง€๊ณ  ์žˆ๊ฒŒ ๋œ๋‹ค.

๋งˆ์ง€๋ง‰์œผ๋กœ hash๋ณ€์ˆ˜์— ๋‹ด๊ฒจ์žˆ๋Š” Map์„ ์ˆœํšŒํ•˜๋ฉด์„œ value๊ฐ€ 0๋ณด๋‹ค ํฐ key(์ฐธ๊ฐ€์ž)๋ฅผ ๊ฑธ๋Ÿฌ๋‚ด๋ฉด ํ•ด๋‹น key(์ฐธ๊ฐ€์ž)๊ฐ€ ์™„์ฃผํ•˜์ง€ ๋ชป ํ•œ ์„ ์ˆ˜๋กœ ํŒ๋ณ„ ๋‚˜๊ฒŒ ๋œ๋‹ค.

 

โœ” ์ฑ„์ 

์ œ์ถœ ๊ฒฐ๊ณผ

๋ฐ˜์‘ํ˜•
profile

๐Ÿ’ป์šฉ๋‡ฝ ๊ฐœ๋ฐœ ๋…ธํŠธ๐Ÿ’ป

@์šฉ๋‡ฝ

ํฌ์ŠคํŒ…์ด ์ข‹์•˜๋‹ค๋ฉด "์ข‹์•„์š”โค๏ธ" ๋˜๋Š” "๊ตฌ๋…๐Ÿ‘๐Ÿป" ํ•ด์ฃผ์„ธ์š”!