๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

๋ฌธ์ œํ’€๊ธฐ

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

๋ฌธ์ œ) ์ˆ˜๋งŽ์€ ๋งˆ๋ผํ†ค ์„ ์ˆ˜๋“ค์ด ๋งˆ๋ผํ†ค์— ์ฐธ์—ฌํ•˜์˜€์Šต๋‹ˆ๋‹ค. ๋‹จ ํ•œ ๋ช…์˜ ์„ ์ˆ˜๋ฅผ ์ œ์™ธํ•˜๊ณ ๋Š” ๋ชจ๋“  ์„ ์ˆ˜๊ฐ€ ๋งˆ๋ผํ†ค์„ ์™„์ฃผํ•˜์˜€์Šต๋‹ˆ๋‹ค.

๋งˆ๋ผํ†ค์— ์ฐธ์—ฌํ•œ ์„ ์ˆ˜๋“ค์˜ ์ด๋ฆ„์ด ๋‹ด๊ธด ๋ฐฐ์—ด 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"

 

 

  ๋‚ด ํ’€์ด   

function solution(participant, completion){
    let object= {};
    
    //์ „์ฒด ์ฐธ์—ฌ์ธ์› ๋ฐฐ์—ด์„ ๊ฐ์ฒด๋กœ ๋งŒ๋“ค๊ธฐ
    participant.forEach((name)=>{
        if(object[name]){
            object[name] = object[name]+1;
        }else{
            object[name]= 1;
        }
    })
    
    //์ „์› ์ฐธ์—ฌ์ธ์› ๊ฐ์ฒด์—์„œ ์™„์ฃผํ•œ ์‚ฌ๋žŒ ๋นผ๊ธฐ
    completion.forEach((name)=>{
        if(object[name]){
            object[name] -= 1;
        }
    })
    
    //์™„์ฃผ ๋ชปํ•œ ์‚ฌ๋žŒ ์ฐพ๊ธฐ
    for(let name in object){
        if(object[name]===1){
            return name;
         }
    }
}

 

  Description  
๋งจ ์ฒ˜์Œ ๋ฌธ์ œ ํ’€์—ˆ๋˜ ๋ฐฉ์‹์€ for๋ฌธ์„ ์ด์šฉํ•˜์—ฌ participant ๋ฐฐ์—ด์—์„œ completion ๋ฐฐ์—ด ๊ฐ’์˜ ๊ฐ’์„ ๋ชจ๋‘ ์ œ๊ฑฐ ํ›„ ๋‚จ์€ ํ•˜๋‚˜์˜ ๊ฐ’์„ ๋ฆฌํ„ดํ•˜๋Š” ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜์˜€๋‹ค(*๋‚จ์€ ํ•˜๋‚˜์˜ ๊ฐ’์ด ์™„์ฃผํ•˜์ง€ ์•Š์€ ์‚ฌ๋žŒ). ๊ทธ๋Ÿฌ๋‚˜ ์ฝ”๋“œ ์ฑ„์  ์‹œ ์ •ํ™•์„ฑ์€ ๋ชจ๋‘ ๋งž์œผ๋‚˜, ํšจ์œจ์„ฑ ๋ถ€๋ถ„์—์„œ ๋ชจ๋‘ ์‹œ๊ฐ„ ์ดˆ๊ณผ๋กœ ํƒˆ๋ฝ์ฒ˜๋ฆฌ ๋˜์—ˆ๋‹ค. ๊ทธ๋ž˜์„œ ์ด๋ฆฌ์ €๋ฆฌ for๋ฌธ์„ ๋ณ€๊ฒฝํ•ด๋ณด์•˜์œผ๋‚˜ ๊ณ„์† ์‹œ๊ฐ„ ์ดˆ๊ณผ๋กœ ํƒˆ๋ฝ๋˜์–ด ๋ฌธ์ œ๋ฅผ ๋‹ค์‹œ ์ฝ์–ด๋ณด์•˜๋‹ค. ๊ทธ๋Ÿฌ๋˜ ์ค‘ ํ•ด๋‹น ๋ฌธ์ œ๊ฐ€ ํ•ด์‹œ๋ฌธ์ œ๋ผ๋Š” ๊ฑธ ๋ณด๊ฒŒ ๋˜์—ˆ๋‹ค. 'ํ•ด์‹œ'๋ผ๋Š” ๋‹จ์–ด๋Š” ๋“ค์–ด๋ณด๊ธด ํ–ˆ์œผ๋‚˜ ์•„์ง ๋ญ”์ง€ ๋ชจ๋ฅธ ์ƒํƒœ์—ฌ์„œ ์ผ๋‹จ ๊ฒ€์ƒ‰ํ•ด๋ณด์•˜๋‹ค.(์ด๊ฒƒ์ด ํšจ์œจ์„ฑ ๋ฌธ์ œ๋ฅผ ํ†ต๊ณผํ•  ์ˆ˜ ์žˆ๋Š” ํ‚คํฌ์ธํŠธ์ธ๊ฐ€...??!)

ํ•ด์‹œ๋ž€ ์˜ˆ๋ฅผ๋“ค์–ด ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ์•”ํ˜ธํ™”ํ•˜์—ฌ ์ €์žฅํ•˜๋Š”๋ฐ ์‚ฌ์šฉ๋˜๋Š” ๋ฐ์ดํ„ฐ ๊ด€๋ฆฌ/์œ ์ง€ ์ž๋ฃŒ๊ตฌ์กฐ๋กœ, ์–ด๋–ค ์ธํ’‹ ๊ฐ’์„ ๋ฐ›์œผ๋ฉด ๊ทธ ๊ฐ’์„ ํ•ด์‹œ ํ•จ์ˆ˜์— ํ†ต๊ณผ์‹œ์ผœ ๋‚˜์˜จ ์ธ๋ฑ์Šค(index)์— ์ €์žฅ๋œ๋‹ค. ๋”ฐ๋ผ์„œ ํ‚ค์™€ ๋ฒจ๋ฅ˜ ๋ชจ์–‘์œผ๋กœ ์ €์žฅ๋˜๋Š” ์ž๋ฃŒ๊ตฌ์กฐ์ธ๋ฐ ํ•ด๋‹น๋ฌธ์ œ๊ฐ€ ํ•ด์‹œ๋ฌธ์ œ์ธ ๊ฒƒ์œผ๋กœ ๋ณด์•„ participant ๋ฐฐ์—ด์„ ํ‚ค์™€ ๋ฒจ๋ฅ˜ ๋ชจ์–‘์œผ๋กœ ๋ณ€๊ฒฝํ•œ ํ›„ completion ๋ฐฐ์—ด ์›์†Œ๊ฐ’์„ participant ํ‚ค๊ฐ’์œผ๋กœ ๋ฐ”๋กœ ์ฐพ์•„ ์—†์• ๋ฉด ๊ทธ๋ƒฅ for๋ฌธ์„ ์ด์šฉํ•˜๋Š”๊ฑฐ ๋ณด๋‹ค ํšจ์œจ์„ฑ์ด ๋†’์•„์ง€๋Š” ๊ฑด๊ฐ€ ์‹ถ์–ด ์œ„์˜ ์ฝ”๋“œ๋กœ ๋ณ€๊ฒฝํ•˜์˜€๊ณ  ๊ทธ ๊ฒฐ๊ณผ ๋ฌธ์ œ๋ฅผ ํ†ต๊ณผํ•˜์˜€๋‹ค.(์šฐ์„  ๋ฌธ์ œ๊ฐ€ ํ†ต๊ณผ๋˜๊ธด ํ–ˆ๋Š”๋ฐ ๋‚ด๊ฐ€ ํ‘ผ ์ฝ”๋“œ๊ฐ€ ์ง„์งœ ํ•ด์‹œ๋ฌธ์ œ ์ถœ์ œ ์˜๋„๋Œ€๋กœ ํ’€์—ˆ๋Š”๊ฐ€๋Š” ์ •ํ™•ํžˆ ๋ชจ๋ฅด๊ฒ ๋‹คใ…Žใ…Žใ…Ž)


 

   ๋‹ค๋ฅธ ๋ถ„๋“ค์˜ ํ’€์ด   

/*ํ’€์ด 1*/
function solution(participant, completion) {
    participant.sort();
    completion.sort();

    for(let i in participant) {
        if(participant[i] !== completion[i]) return participant[i];
    }
}



/*ํ’€์ด 2*/
const solution = (p, c) => {
    p.sort()
    c.sort()
    while (p.length) {
        let pp = p.pop()
        if (pp !== c.pop()) return pp
    }
}

 

  Review  

์•„๋‹ˆ ์ด๋ก ...?? ๋‚˜๋Š” ๋งจ ์ฒ˜์Œ for๋ฌธ์„ ์ด์šฉํ•˜์—ฌ ํ’€์—ˆ์„ ๋•Œ ํšจ์œจ์„ฑ ๋ถ€๋ถ„์—์„œ ํ†ต๊ณผ๊ฐ€ ์•ˆ๋˜์—ˆ๋Š”๋ฐ... sort( )๋กœ ์ •๋ ฌ ์‹œ์ผœ์ค€ ๋’ค for๋ฌธ์„ ์ด์šฉํ•˜๋‹ˆ๊น ๋˜๋„ค...??? ์ด๋ ‡๊ฒŒ ์˜ค๋Š˜ ๋‚˜๋Š” sort ๋ฉ”์†Œ๋“œ์˜ ์ค‘์š”์„ฑ์„ ๋ฐฐ์› ๋‹ค...(ใ…Žํ•˜ํ•˜ํ•˜ํ•˜ํ•˜ใ…ํ•ณใ……)