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

tempยท2022๋…„ 9์›” 26์ผ
0

์•Œ๊ณ ๋ฆฌ์ฆ˜

๋ชฉ๋ก ๋ณด๊ธฐ
21/30

๋‚˜์˜ ํ’€์ด

function solution(participant, completion) {
  const a = participant.sort()
  const b = completion.sort()

  for (var i=0; i<a.length; i++) {
    if (a[i] !== b[i]) return a[i]
  } 
}

๋‹ค๋ฅธ ํ’€์ด

var solution=(_,$)=>_.find(_=>!$[_]--,$.map(_=>$[_]=($[_]|0)+1))
์™„์ฃผ์ž ๋ฐฐ์—ด์„ {์ด๋ฆ„:์™„์ฃผ์ž๋ฐฐ์—ด์— ๋“ฑ์žฅํ•˜๋Š” ํšŸ์ˆ˜}๋กœ ๋งตํ•‘ํ•˜๊ณ , 
๊ทธ ๋งต์— ์ฐธ๊ฐ€์ž ์ด๋ฆ„ ํ•˜๋‚˜์”ฉ ๋„ฃ์–ด์„œ ์ฐพ์•„๋ณผ๋•Œ๋งˆ๋‹ค ํšŸ์ˆ˜ ๋–จ์–ด๋œจ๋ ค์„œ ํšŸ์ˆ˜ 0๋‚˜์˜ค๋Š” ๋†ˆ ์ฐพ์•„๋ฑ‰๋Š” ํ•จ์ˆ˜

๋ผ๊ณ  ํ•œ๋‹ค..

์ •๊ทœํ‘œํ˜„์‹์€ ์ผ๋‹จ ์ œ์ณ๋‘๋”๋ผ๋„,

var solution=(participant,completion)=>participant.find(name=>!completion[name]--,completion.map(name=>completion[name]=(completion[name]|0)+1))

โ†“โ†“โ†“

function solution(participant,completion) { 
  return participant
    .find(name=>!completion[name]--,completion.map(name=>completion[name]=(completion[name]|0)+1))
}                                                                         

arr.find(callback[, thisArg]) ์—ฌ๊ธฐ์„œ thisArg๋Š” ์„ ํƒ ํ•ญ๋ชฉ. ์ฝœ๋ฐฑ์ด ํ˜ธ์ถœ๋  ๋•Œ this๋กœ ์‚ฌ์šฉํ•  ๊ฐ์ฒด ์ธ๋ฐ find ์•ˆ์˜ ์ฝœ๋ฐฑํ•จ์ˆ˜์—์„œ ์ฒซ๋ฒˆ์งธ๋ณด๋‹ค thisArg์˜ ํ•จ์ˆ˜๊ฐ€ ๋จผ์ € ์‹คํ–‰๋œ๋‹ค๊ณ  ํ•œ๋‹ค.

์ง€๊ธˆ ์ด thisArg ๋ถ€๋ถ„์— map ํ•จ์ˆ˜๊ฐ€ ๋“ค์–ด์žˆ๊ณ ,

๊ทธ๋ž˜์„œ ๋งตํ•จ์ˆ˜๊ฐ€ ๋จผ์ € ์…‹ํŒ…๋œ ํ›„ ์ฝœ๋ฐฑํ•จ์ˆ˜์—์„œ ์ด์šฉํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋œ ๊ฒƒ์ด๋‹ค.

completion[name]=(completion[name]|0)+1

  • name์€ completion์˜ ๊ฐ ์ธ์ˆ˜
  • completion[name]์„ ์ •์˜๋ฅผ ํ•˜๋Š”๋ฐ (=), OR ์„ ์‚ฌ์šฉํ•ด์„œ
  • "๋งŒ์•ฝ completion[name]์ด ์กด์žฌํ•˜๋ฉด, ๊ทธ ๊ฐ’์— +1 ์„ ํ•œ ๊ฒƒ", ์ด๊ณ , "์กด์žฌ ์•ˆํ•˜๋ฉด, 0 + 1 (์ฆ‰ 1)"

์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์˜ ๋ฐฐ์—ด์€ ์‚ฌ์‹ค, ๊ฐ์ฒด์ž…๋‹ˆ๋‹ค. typeof ๋กœ ์•„๋ฌด ๋ฐฐ์—ด ๋งŒ๋“œ์…”์„œ ํ™•์ธํ•ด๋ณด์‹œ๋ฉด ์˜ค๋ธŒ์ ํŠธ๊ฐ€ ๋‚˜์˜ค์ฃ . ๊ทธ๋Ÿฌ๋ฏ€๋กœ completion[name]์„ ํ•˜๋ฉด ๋‹จ์ˆœํžˆ ์šฐ๋ฆฌ๊ฐ€ ๊ฐ์ฒด์—์„œ 'key-value' ํŽ˜์–ด์—์„œ ๋ฐธ๋ฅ˜ ์ ‘๊ทผํ•˜๋“ฏ์ด "completion ๊ฐ์ฒด ์ค‘ name์ด๋ผ๋Š” ํ‚ค์˜ ๊ฐ’์ด ๋ญ๋‹ˆ" ๊ฐ€ ๋ฉ๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๋งŒ์•ฝ์— ๊ทธ๋Ÿฐ ํ‚ค-๋ฐธ๋ฅ˜ ํŽ˜์–ด๊ฐ€ ์กด์žฌํ•˜์ง€ ์•Š์œผ๋ฉด undefined๋ฅผ ๋ฆฌํ„ดํ•˜๊ฒŒ ๋˜๊ณ , ์ด๊ฒƒ์€ false๊ฐ€ ๋˜๋ฏ€๋กœ, ์œ„์˜ OR ๊ตฌ์ ˆ์—์„œ ์•ž์ด false์˜€์œผ๋ฏ€๋กœ ๋’ค์˜ ๊ฐ’์ธ 0 ์ด ์ถœ๋™ํ•˜๊ฒŒ ๋˜๊ณ , ์‹ค์ œ๋กœ ์ •์˜๋˜๋Š” ๊ฐ’์€ 0 + 1์ธ 1 ์ด๋˜์ฃ . ๊ทธ๋Ÿฌ๋ฏ€๋กœ ์ปดํ”Œ๋ฆฌ์…˜ ๋ฐฐ์—ด ์•ˆ์— "ํ•˜๋‚˜๋งŒ ์žˆ๋Š” ์ด๋ฆ„"์€ ๋ชจ๋‘ ์ด๋ฆ„ : 1 ์ด๋ ‡๊ฒŒ ๋ณ€ํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.
๋งŒ์•ฝ์— ์ด๋ฆ„์ด ๋‘๊ฐœ์ธ ๊ฒฝ์šฐ์—๋Š” completion[name]์ด ์ด๋ฏธ ์กด์žฌํ•ด์„œ 1 ์ด๋ผ๋Š” ๊ฐ’์„ ๋ฆฌํ„ด ํ• ๊ฑฐ๊ณ , ๊ทธ๋Ÿฌ๋ฉด 1 + 1 ์ด๋˜์–ด์„œ 2๊ฐœ๊ฐ€ ๋˜๊ณ , ์ด๋ฆ„์ด ๋” ๋งŽ์œผ๋ฉด ๋ญ ๊ณ„์† ๋”ํ•ด์ง€๊ฒ ์ฃ .
completion ๋ฐฐ์—ด์˜ ๊ฐ ์š”์†Œ์— ๋Œ€ํ•ด ์ด ์ž‘์—…์„ ๋๋‚ด์ฃผ๋ฉด ์ด '๋งตํŽ‘์…˜' ๋ถ€๋ถ„์˜ ์กด์žฌ ์ด์œ ๊ฐ€ ๋‹ฌ์„ฑ์ด ๋˜๊ณ  completion์€ ์ฒ˜์Œ์— ์ธํ’‹ ๋ฐ›์•˜๋˜ ๋ฐฐ์—ด์ด ์•„๋‹Œ, ์ด๋ฆ„: ๊ฐฏ์ˆ˜ ๋“ค์ด "์ถ”๊ฐ€๊ฐ€ ๋œ" ๋ฐฐ์—ด์ด ๋˜์ฃ . ์‹ค์ œ๋กœ ๋ฐ”๋€ ๋ฐฐ์—ด์„ ์ฒดํฌํ•ด๋ณด๋ฉด ์ด๋ ‡์Šต๋‹ˆ๋‹ค. ['cake', 'ball', 'sauce', 'cake', cake: 2, ball: 1, sauce: 1]. ์กฐ๊ธˆ ์›ƒ๊ธด ๋ชจ์Šต์ด์ฃ .
๋ณธ๋ก ์œผ๋กœ ์˜ค๋ฉด์ด์ œ, ์šฐ๋ฆฌ์˜ completion์€ ์ž‘์—…์ด ๋๋‚œ ์ƒํƒœ์ด๋ฏ€๋กœ ์•ž๋ถ€๋ถ„์—” ๋ชจ๋“  ์ด๋ฆ„์ด ์ŠคํŠธ๋ง์œผ๋กœ ๋“ค์–ด์žˆ๊ณ , ๊ทธ๊ฑฐ์— ์ด์–ด์„œ ๊ฐ ์ด๋ฆ„์˜ ๊ฐฏ์ˆ˜๊ฐ€ ํ‚ค-๋ฐธ๋ฅ˜ ํŒจ์–ด๋กœ ๋“ค์–ด์žˆ์Šต๋‹ˆ๋‹ค. ๋จผ์ € find๋Š” ๋’ค ํ…Œ์ŠคํŠธ์˜ "ํŠธ๋ฃจ"๋ฅผ ์ฃผ๋Š” ์ฒซ๋ฒˆ์งธ ์š”์†Œ๋ฅผ ๋ฆฌํ„ดํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋ฉด ์ด์ œ !completion[name]-- ์ด๊ฒŒ ๋ฌด์Šจ ํ…Œ์ŠคํŠธ์ธ์ง€๋ฅผ ๋ณด๊ณ , ์–ด๋–ค ๊ฒฝ์šฐ์— 'ํŠธ๋ฃจ'๋ฅผ ์ฃผ๋Š๋ƒ๋ฅผ ์ƒ๊ฐํ•ด๋ณด๋ฉด ๋˜๊ฒ ์ฃ .
!completion[name]-- ์—ฌ๊ธฐ์„œ ์ค‘์š”ํ•œ๊ฑด 2๊ฐœ์ž…๋‹ˆ๋‹ค. completion[name]์€ ๋‹ค๋“ค ์•„์‹œ๋‹ค์‹œํ”ผ ์ด์ œ ๊ทธ ํ•ด๋‹น ์ด๋ฆ„์˜ '๊ฐฏ์ˆ˜'๋ฅผ ๋ถˆ๋Ÿฌ์˜ฌ ๊ฑฐ์ฃ . ์ค‘์š”1: ๋Š๋‚Œํ‘œ๋Š” ๋ญ˜ํ•˜๊ณ ์žˆ๋ƒ? ์ด๊ฑด ๊ฐ„๋‹จํžˆ ๋Š๋‚Œํ‘œ ๋’ค์˜ ๊ฐ’์„ "๋ถˆ๋ฆฌ์–ธ"์œผ๋กœ ๋ฐ”๊ฟ”์ฃผ๋Š”๋ฐ, ๋ฐ˜๋Œ€๋กœ ๋ฐ”๊ฟ”์ค๋‹ˆ๋‹ค. !true๋ฉด ๊ฑฐ์ง“์ด ๋‚˜์˜จ๋‹ค๋Š” ๋ง์ด์ฃ . ๋˜ !0, !5, !''๋“ฑ ํ…Œ์ŠคํŠธ๋ฅผ ํ•ด๋ณด์„ธ์š”. ์ฐธ๊ณ ๋กœ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์— '๊ฑฐ์ง“'์ด ๋˜๋Š” ๋ฐธ๋ฅ˜๋Š” ์ด 7๊ฐœ๋ฟ์ž…๋‹ˆ๋‹ค. (false, 0, -0, NaN, null, undefined, ''). ์ค‘์š”2: -- ๋Š” ๋‹ค ์•„์‹œ๋‹ค์‹œํ”ผ 1์„ ์‚ญ๊ฐํ•˜๋Š”๋ฐ, ์—ฌ๊ธฐ์„œ ์ค‘์š”ํ•œ๊ฑด 'ํ›„์น˜'๋ผ๋Š” ๊ฒ๋‹ˆ๋‹ค. ์ฆ‰ ๊ฐ’์„ ๋ถˆ๋Ÿฌ์˜ค๊ณ , !์„ ํ†ตํ•ด ์ฐธ๊ฑฐ์ง“ ํŒ๋ณ„์„ ํ•˜๊ณ , ๊ทธ ์—ด์˜ ๊ณ„์‚ฐ์ด ๋‹ค ๋๋‚˜๊ณ  ๋‹ค์Œ ์—ด๋กœ ๊ฐˆ ๋•Œ์•ผ ๊ฐ’์ด ๋ฐ”๋€Œ๋Š”๊ฑฐ์ฃ . "๋ถˆ๋Ÿฌ์˜จ ์ˆœ๊ฐ„์˜ ๊ฐ’"์œผ๋กœ ์ฐธ๊ฑฐ์ง“ ํŒ๋ณ„์„ ํ•œ๋‹ค๋Š” ๊ฒŒ ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค.
participant์— find๋ฅผ ํ–ˆ์œผ๋ฏ€๋กœ ์ด์ œ ๋ชจ๋“  ์ฐธ๊ฐ€์ž์˜ ์ด๋ฆ„์„ ๊ฐ–๊ณ  completion์— ์ด ์ด๋ฆ„์ด ๋ช‡ ๊ฐœ ์กด์žฌ ํ–ˆ์—ˆ๋‚˜๋ฅผ ๋ณด๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋ฉด ๋งŒ์•ฝ์— ์ด๋ฆ„์ด 1๊ฐœ ์˜€์œผ๋ฉด "๋ถˆ๋ ค์˜ค๋Š” ์ˆœ๊ฐ„์—๋Š” 1์ด๋ฏ€๋กœ ์ด๊ฒƒ์€ ๋ถˆ๋ฆฌ์–ธ์œผ๋กœ ๋ณด๋ฉด ์ฐธ", ๊ทธ๋ฆฌ๊ณ  find์˜ ์ฐธ๊ฑฐ์ง“ ํŒ๋ณ„์€ ์•ž์˜ ! ๋Š๋‚Œํ‘œ๋กœ ์ธํ•ด ์ฐธ์€ ๊ฑฐ์ง“์œผ๋กœ ๋ณ€ํ•ด์„œ '๊ฑฐ์ง“'์ด ๋ฉ๋‹ˆ๋‹ค. 1 ์ด์ƒ์ด์—ˆ์–ด๋„ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ 0์ด์ƒ์˜ ์ˆซ์ž์˜€์„๊ฑฐ๋‹ˆ๊นŒ, ๊ฑฐ์ง“์œผ๋กœ ํŒ๋ช…์ด ๋‚˜๊ณ  find ํ•จ์ˆ˜๋Š” ๊ณ„์† ์ด์–ด์ง‘๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋ฉด ์–ธ์ œ "์ฐธ"์ด ๋‚˜์˜ค๋ƒ๋ฉด, ๊ทธ๊ฒƒ์€ completion[name]์ด '๊ฑฐ์ง“'์ด ๋˜๋Š” ๊ฐ’์„ ๋ฐ˜ํ™˜ํ–ˆ์„ ๋•Œ ๋ฟ์ž…๋‹ˆ๋‹ค.
ํ˜„ ์ƒํ™ฉ์—์„œ completion[name] ์„ ์ˆ˜ํ–‰ํ•œ ํ›„์— ๋‚˜์˜ฌ ์ˆ˜ ์žˆ๋Š” ๊ฑฐ์ง“์ด ๋  ๊ฐ’์€ 0 ์ด๊ฑฐ๋‚˜, ์•„๋‹ˆ๋ฉด 'name'์— ํ•ด๋‹นํ•˜๋Š” ํŽ˜์–ด๊ฐ€ completion์— ์กด์žฌํ•˜์ง€ ์•Š์„ ๋•Œ๋Š” undefined๋ฅผ ๋ฆฌํ„ด ํ•˜๊ฒ ์ฃ . ๊ทธ๋Ÿผ false๋“ค์„ ๋ฆฌํ„ดํ•˜๊ฒŒ ๋˜๊ณ , ! ๋กœ ์ธํ•ด์„œ true๋กœ ๋ฐ”๋€Œ๊ณ  ์ •๋‹ต ๊ฐœ๋ด‰๋ฐ•๋‘ ํ•˜๊ฒŒ๋˜๋Š”๊ฑฐ์ฃ .
์ฐธ๊ณ ๋กœ '0'์„ ๋ฆฌํ„ดํ•˜๋Š” ๊ฒฝ์šฐ์—๋Š” '๋™๋ช…์˜ ์ฐธ๊ฐ€์ž๊ฐ€ 2๋ช… ์ด์ƒ ์žˆ์—ˆ๋Š”๋ฐ, ๊ทธ์ค‘์— 1๋ช…์ด ์•ˆ๋“ค์–ด์™”์„ ๋•Œ', ์ด๊ณ  undefined๋ฅผ ๋ฆฌํ„ดํ•˜๊ฒŒ ๋˜๋Š” ๊ฒฝ์šฐ๋Š” '๋ชป๋“ค์–ด์˜จ ์ด๋ฆ„์ด 1๊ฐœ ๋ฟ์ด์—ˆ๊ณ  ๊ทธ์‚ฌ๋žŒ์ด ๋ชป๋“ค์–ด์™”์„๋•Œ' ์ž…๋‹ˆ๋‹ค. ์—ฌ๋‹ด์œผ๋กœ undefined์— ! ๋Š๋‚Œํ‘œ ๋•Œ๋ฆฌ๊ณ ๋‚˜์„œ ํ›„์น˜๋กœ -- ๋ฅผ ๋•Œ๋ ค์ฃผ๋ฉด ํ•ด๋‹น ํ‚ค๋ฐธ๋ฅ˜ ํŽ˜์–ด๊ฐ€ ์กด์žฌํ•˜๊ฒŒ ๋˜๊ณ , ๊ฐ’์€ NaN์ด ๋ฉ๋‹ˆ๋‹ค.

์ด ๊ฐœ๋… ์ž์ฒด๋Š” ๋‚˜์ค‘์— ์จ๋จน์„ ์ˆ˜ ์žˆ์„ ๊ฒƒ ๊ฐ™๋‹ค.
์Œ... ๊ฐ™์€ ์š”์†Œ๊ฐ€ ๋ช‡ ๊ฐœ๊ฐ€ ์žˆ๋Š”์ง€ ์ฐพ์„ ๋•Œ?
๊ทผ๋ฐ ์™œ ๋งตํ•‘ํ•œ ๊ฒŒ ์ถ”๊ฐ€๊ฐ€ ๋˜๋Š”์ง€ ๋ชจ๋ฅด๊ฒ ๋‹ค...

(์ฐธ๊ณ )

find ์— ์ธ๋ฑ์Šค๊ฐ’ ์ถ”๊ฐ€ ๊ฐ€๋Šฅํ•œ์ง€ ๊ถ๊ธˆํ–ˆ๋Š”๋ฐ ๊ฐ€๋Šฅํ•œ๊ฐ€๋ด!!

answer = participant.find((el, index) => el !== completion[index]); 

์›๋ž˜ ๋‚˜๋„ ์ด๋ ‡๊ฒŒ ํ•˜๊ณ  ์‹ถ์—ˆ๋˜๊ฑด๋Ž… ์ธ๋ฑ์Šค๊ฐ€ ์ถ”๊ฐ€๋˜๋Š”์ง€ ๋ชฐ๋ž์—ˆ์Œ...

๐Ÿ“Œ ์•”ํŠผ ์—ฌ๊ธฐ์„œ ๋‚ด๊ฐ€ ๋ฐฐ์šด ๊ฒƒ!

  1. find์— ๋‘ ๋ฒˆ์งธ ์ธ์ž๋กœ index๋„ ๋„ฃ์„ ์ˆ˜ ์žˆ๋‹ค๋Š”๊ฑฐ!
  2. ๋ฐฐ์—ด ๋˜๋Š” ์˜ค๋ธŒ์ ํŠธ์—์„œ ๊ฐ™์€ ๊ฐ’์„ ๊ฐ–๋Š” ์š”์†Œ์˜ ๊ฐœ์ˆ˜๋ฅผ map์„ ํ†ตํ•ด ์‰ฝ๊ฒŒ ๊ตฌํ•  ์ˆ˜ ์žˆ๋‹ค!
    .map(name=>completion[name]=(completion[name]|0)+1)
profile
๊ณต๋ถ€ํ•œ ๋‚ด์šฉ ์ •๋ฆฌ์ค‘...

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

๊ด€๋ จ ์ฑ„์šฉ ์ •๋ณด