๐Ÿ“Œ 1. ๋ฌธ์ œ


[Programmers, Level1] ํ•ด์‹œ | ์™„์ฃผํ•˜์ง€ ๋ชปํ•œ ์„ ์ˆ˜


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


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


์ œํ•œ์‚ฌํ•ญ

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


participant completion return
[โ€œleoโ€, โ€œkikiโ€, โ€œedenโ€] [โ€œedenโ€, โ€œkikiโ€] โ€œleoโ€
[โ€œmislavโ€, โ€œstankoโ€, โ€œmislavโ€, โ€œanaโ€] [โ€œstankoโ€, โ€œanaโ€, โ€œmislavโ€] โ€œmislavโ€


โœ ํ’€์ด

1์ฐจ ์‹œ๋„ - ์ •ํ™•์„ฑ ํ†ต๊ณผ โญ•, ํšจ์œจ์„ฑ ์‹คํŒจ โŒ
function solution(participant, completion) {
  for (let i = 0; i < completion.length; i++) {
    let num = participant.indexOf(completion[i]);
    participant.splice(num, 1);
  }
  return participant[0];
}
2์ฐจ ์‹œ๋„ - ์ •ํ™•์„ฑ ํ†ต๊ณผ โญ•, ํšจ์œจ์„ฑ ์‹คํŒจ โŒ
function solution(participant, completion) {
  completion.forEach((item) => {
    participant.splice(participant.indexOf(item), 1);
  });
  return participant[0];
}
3์ฐจ ์‹œ๋„ - ์ •ํ™•์„ฑ ํ†ต๊ณผ โญ•, ํšจ์œจ์„ฑ ํ†ต๊ณผ โญ•
function solution(participant, completion) {
    participant.sort();
    completion.sort();
    for(var i = 0; i < participant.length; i++) {
        if (participant[i] !== completion[i]) {
            return participant[i];
        }
    }


  • 1์ฐจ์‹œ๋„์—์„œ๋Š” ํ‰์†Œ ํ’€๋˜๋Œ€๋กœ for๋ฌธ์œผ๋กœ ์ฐธ๊ฐ€ํ•œ ์„ ์ˆ˜๋“ค๊ณผ ์™„์ฃผํ•œ ์„ ์ˆ˜ ํ•œ๋ช…์”ฉ ๋น„๊ตํ•˜๋ฉฐ ์ฐธ๊ฐ€์„ ์ˆ˜๋“ค์„ ์ง€์›Œ๋‚˜๊ฐ€๋Š” ์ฝ”๋“œ๋ฅผ ์งฐ๋‹ค. ์ •ํ™•์„ฑ์€ ํ†ต๊ณผํ–ˆ๋Š”๋ฐ ํšจ์œจ์„ฑ๋ฌธ์ œ์—์„œ ํ†ต๊ณผํ•˜์ง€ ๋ชปํ–ˆ๋‹ค.
  • 2์ฐจ์‹œ๋„์—์„œ for๋ฌธ์„ forEach๋ฌธ์œผ๋กœ ๋ณ€๊ฒฝํ•˜์˜€์ง€๋งŒ ์ด ์ฝ”๋“œ ๋˜ํ•œ ํšจ์œจ์„ฑ์—์„œ ๋ง‰ํ˜”๋‹ค.
  • 3์ฐจ์‹œ๋„์—์„œ๋Š” ๊ฐ€์žฅ ๋จผ์ € ์ฐธ๊ฐ€ ์„ ์ˆ˜๋“ค, ์™„์ฃผ ์„ ์ˆ˜๋“ค ๋ชจ๋‘ ์ •๋ ฌ์„ ํ•˜๊ณ  ์ •๋ ฌ๋œ ๋ฐฐ์—ด์˜ index๋ผ๋ฆฌ ๋‹ค๋ฅด๋ฉด ๋ฐ”๋กœ ํ•ด๋‹น ์„ ์ˆ˜๊ฐ€ return๋˜๋Š” ์ฝ”๋“œ๋กœ ์ž‘์„ฑํ–ˆ๋‹ค. 3์ฐจ ์‹œ๋„์—์„œ ํšจ์œจ์„ฑ ๋ฌธ์ œ๊ฐ€ ํ•ด๊ฒฐ ๋๋‹ค! ๊ตณ์ด 1. for๋ฌธ์„ ์ „๋ถ€ ๋‹ค ๋Œ๋ฆฌ๊ณ  2. ๊ธฐ์กด ๋ฐฐ์—ด์„ ์‚ญ์ œํ•˜๋Š” ์ฝ”๋“œ ์—†์ด ๊ฐ™์€ index์—์„œ ์„œ๋กœ ๋‹ค๋ฅธ ์š”์†Œ๊ฐ€ ๋‚˜์™”์„ ๋•Œ ํ•ด๋‹น ์š”์†Œ๊ฐ€ ๋ฐ”๋กœ return ๋˜๋Š” ๋ถ€๋ถ„์—์„œ ํšจ์œจ์„ฑ์ด ๋†’์•„์ง„ ๊ฒƒ ๊ฐ™๋‹ค.