Jieunny์˜ ๋ธ”๋กœ๊ทธ

[JS] ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค - ์ฒด์œก๋ณต ๋ณธ๋ฌธ

Study/Coding Test

[JS] ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค - ์ฒด์œก๋ณต

Jieunny 2023. 1. 30. 13:33

๐Ÿ“Œ  ๋ฌธ์ œ

์ ์‹ฌ์‹œ๊ฐ„์— ๋„๋‘‘์ด ๋“ค์–ด, ์ผ๋ถ€ ํ•™์ƒ์ด ์ฒด์œก๋ณต์„ ๋„๋‚œ๋‹นํ–ˆ์Šต๋‹ˆ๋‹ค. ๋‹คํ–‰ํžˆ ์—ฌ๋ฒŒ ์ฒด์œก๋ณต์ด ์žˆ๋Š” ํ•™์ƒ์ด ์ด๋“ค์—๊ฒŒ ์ฒด์œก๋ณต์„ ๋นŒ๋ ค์ฃผ๋ ค ํ•ฉ๋‹ˆ๋‹ค. ํ•™์ƒ๋“ค์˜ ๋ฒˆํ˜ธ๋Š” ์ฒด๊ฒฉ ์ˆœ์œผ๋กœ ๋งค๊ฒจ์ ธ ์žˆ์–ด, ๋ฐ”๋กœ ์•ž๋ฒˆํ˜ธ์˜ ํ•™์ƒ์ด๋‚˜ ๋ฐ”๋กœ ๋’ท๋ฒˆํ˜ธ์˜ ํ•™์ƒ์—๊ฒŒ๋งŒ ์ฒด์œก๋ณต์„ ๋นŒ๋ ค์ค„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, 4๋ฒˆ ํ•™์ƒ์€ 3๋ฒˆ ํ•™์ƒ์ด๋‚˜ 5๋ฒˆ ํ•™์ƒ์—๊ฒŒ๋งŒ ์ฒด์œก๋ณต์„ ๋นŒ๋ ค์ค„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ฒด์œก๋ณต์ด ์—†์œผ๋ฉด ์ˆ˜์—…์„ ๋“ค์„ ์ˆ˜ ์—†๊ธฐ ๋•Œ๋ฌธ์— ์ฒด์œก๋ณต์„ ์ ์ ˆํžˆ ๋นŒ๋ ค ์ตœ๋Œ€ํ•œ ๋งŽ์€ ํ•™์ƒ์ด ์ฒด์œก์ˆ˜์—…์„ ๋“ค์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์ „์ฒด ํ•™์ƒ์˜ ์ˆ˜ n, ์ฒด์œก๋ณต์„ ๋„๋‚œ๋‹นํ•œ ํ•™์ƒ๋“ค์˜ ๋ฒˆํ˜ธ๊ฐ€ ๋‹ด๊ธด ๋ฐฐ์—ด lost, ์—ฌ๋ฒŒ์˜ ์ฒด์œก๋ณต์„ ๊ฐ€์ ธ์˜จ ํ•™์ƒ๋“ค์˜ ๋ฒˆํ˜ธ๊ฐ€ ๋‹ด๊ธด ๋ฐฐ์—ด reserve๊ฐ€ ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ์ฃผ์–ด์งˆ ๋•Œ, ์ฒด์œก์ˆ˜์—…์„ ๋“ค์„ ์ˆ˜ ์žˆ๋Š” ํ•™์ƒ์˜ ์ตœ๋Œ“๊ฐ’์„ return ํ•˜๋„๋ก solution ํ•จ์ˆ˜๋ฅผ ์ž‘์„ฑํ•ด์ฃผ์„ธ์š”.

๐Ÿ’ก ์•„์ด๋””์–ด

ํ•™์ƒ์ˆ˜ n ๋งŒํผ ๋ฐฐ์—ด์„ ๋งŒ๋“ค์–ด์„œ ๊ฐ–๊ณ  ์žˆ๋Š” ์ฒด์œก๋ณต ๊ฐœ์ˆ˜๋ฅผ ์ €์žฅํ•œ๋‹ค.

์ฒด์œก๋ณต ๊ฐœ์ˆ˜๊ฐ€ 0์ธ ํ•™์ƒ ์•ž ๋ฒˆํ˜ธ ํ•™์ƒ์ด๋‚˜ ๋’ท ๋ฒˆํ˜ธ ํ•™์ƒ์˜ ์ฒด์œก๋ณต ๊ฐœ์ˆ˜๊ฐ€ 2๊ฐœ๋ผ๋ฉด ํ•˜๋‚˜ ๋ฐ›์•„์˜จ๋‹ค.

17-20๋ฒˆ ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค๊ฐ€ ์•ˆํ’€๋ ค์„œ ์งˆ๋ฌธ ๋’ค์ ธ๋ณด๋‹ˆ๊นŒ ์•ž๋’ค ํ•™์ƒ์ด ๋‹ค ์—ฌ๋ถ„์ด ์žˆ์„ ๊ฒฝ์šฐ ์•ž์˜ ํ•™์ƒ์—๊ฒŒ์„œ ๋ฐ›์•„์˜ค๊ฒŒ ํ•ด์•ผํ•œ๋‹ค.

์ด๋Ÿฐ๊ฑด ์กฐ๊ฑด์— ์—†์—ˆ์ž–์•„..

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

function solution(n, lost, reserve) {
  var answer = 0;
  let count = new Array(n);
  count.fill(0);

  for(let i=0; i<n; i++){
    if(reserve.includes(i+1)){
      count[i] += 2;
    }
    else {
      count[i]++;
    }

    if(lost.includes(i+1)){
      count[i]--;
    }
  }

  for(let i=0; i<count.length; i++){	//์ฒด์œก๋ณต ๋ฐ›์•„์˜ค๊ธฐ
    if(count[i] === 0 && count[i-1] === 2){
    // ์•ž ์‚ฌ๋žŒ ํ•œํ…Œ์„œ ๋จผ์ € ๋ฐ›์•„์™€์•ผํ•œ๋‹ค.
      count[i]++;
      count[i-1]--;
    }
    else if(count[i] === 0 && count[i+1] === 2){
      count[i]++;
      count[i+1]--;
    }
  }

  for(let i=0; i<count.length; i++){
    if(count[i] > 0){
      answer++;
    }
  }

  return answer;
}