๐Ÿ€TIL๐Ÿ€[JavaScript] Coding Test ์Šคํ„ฐ๋””

PYMยท2023๋…„ 11์›” 7์ผ
0

๐Ÿ€TIL๐Ÿ€Coding Test

๋ชฉ๋ก ๋ณด๊ธฐ
16/16

์ž๋ฃŒ๊ตฌ์กฐ(์Šคํƒ, ํ)

Q. ๊ณต์ฃผ ๊ตฌํ•˜๊ธฐ

์ •๋ณด ์™•๊ตญ์˜ ์ด์›ƒ ๋‚˜๋ผ ์™ธ๋™๋”ธ ๊ณต์ฃผ๊ฐ€ ์ˆฒ์†์˜ ๊ดด๋ฌผ์—๊ฒŒ ์žกํ˜€๊ฐ”๋‹ค.
์ •๋ณด ์™•๊ตญ์—๋Š” ์™•์ž๊ฐ€ N๋ช…์ด ์žˆ๋Š”๋ฐ ์„œ๋กœ ๊ณต์ฃผ๋ฅผ ๊ตฌํ•˜๋Ÿฌ ๊ฐ€๊ฒ ๋‹ค๊ณ  ํ•œ๋‹ค.
์ •๋ณด์™•๊ตญ์˜ ์™•์€ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋ฐฉ๋ฒ•์œผ๋กœ ๊ณต์ฃผ๋ฅผ ๊ตฌํ•˜๋Ÿฌ ๊ฐˆ ์™•์ž๋ฅผ ๊ฒฐ์ •ํ•˜๊ธฐ๋กœ ํ–ˆ๋‹ค.
์™•์€ ์™•์ž๋“ค์„ ๋‚˜์ด ์ˆœ์œผ๋กœ 1๋ฒˆ๋ถ€ํ„ฐ N๋ฒˆ๊นŒ์ง€ ์ฐจ๋ก€๋กœ ๋ฒˆํ˜ธ๋ฅผ ๋งค๊ธด๋‹ค.
๊ทธ๋ฆฌ๊ณ  1๋ฒˆ ์™•์ž๋ถ€ํ„ฐ N๋ฒˆ ์™•์ž๊นŒ์ง€ ์ˆœ์„œ๋Œ€๋กœ ์‹œ๊ณ„ ๋ฐฉํ–ฅ์œผ๋กœ ๋Œ์•„๊ฐ€๋ฉฐ ๋™๊ทธ๋ž—๊ฒŒ ์•‰๊ฒŒ ํ•œ๋‹ค.
๊ทธ๋ฆฌ๊ณ  1๋ฒˆ ์™•์ž๋ถ€ํ„ฐ ์‹œ๊ณ„๋ฐฉํ–ฅ์œผ๋กœ ๋Œ์•„๊ฐ€๋ฉฐ 1๋ถ€ํ„ฐ ์‹œ์ž‘ํ•˜์—ฌ ๋ฒˆํ˜ธ๋ฅผ ์™ธ์น˜๊ฒŒ ํ•œ๋‹ค.
ํ•œ ์™•์ž๊ฐ€ K(ํŠน์ •์ˆซ์ž)๋ฅผ ์™ธ์น˜๋ฉด ๊ทธ ์™•์ž๋Š” ๊ณต์ฃผ๋ฅผ ๊ตฌํ•˜๋Ÿฌ ๊ฐ€๋Š”๋ฐ์„œ ์ œ์™ธ๋˜๊ณ  ์› ๋ฐ–์œผ๋กœ ๋‚˜์˜ค๊ฒŒ ๋œ๋‹ค.
๊ทธ๋ฆฌ๊ณ  ๋‹ค์Œ ์™•์ž๋ถ€ํ„ฐ ๋‹ค์‹œ 1๋ถ€ํ„ฐ ์‹œ์ž‘ํ•˜์—ฌ ๋ฒˆํ˜ธ๋ฅผ ์™ธ์นœ๋‹ค.
์ด๋ ‡๊ฒŒ ํ•ด์„œ ๋งˆ์ง€๋ง‰๊นŒ์ง€ ๋‚จ์€ ์™•์ž๊ฐ€ ๊ณต์ฃผ๋ฅผ ๊ตฌํ•˜๋Ÿฌ ๊ฐˆ ์ˆ˜ ์žˆ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด ์ด 8๋ช…์˜ ์™•์ž๊ฐ€ ์žˆ๊ณ , 3์„ ์™ธ์นœ ์™•์ž๊ฐ€ ์ œ์™ธ๋œ๋‹ค๊ณ  ํ•˜์ž.
์ฒ˜์Œ์—๋Š” 3๋ฒˆ ์™•์ž๊ฐ€ 3์„ ์™ธ์ณ ์ œ์™ธ๋œ๋‹ค.
์ด์–ด 6, 1, 5, 2, 8, 4๋ฒˆ ์™•์ž๊ฐ€ ์ฐจ๋ก€๋Œ€๋กœ ์ œ์™ธ๋˜๊ณ  ๋งˆ์ง€๋ง‰๊นŒ์ง€ ๋‚จ๊ฒŒ ๋œ 7๋ฒˆ ์™•์ž์—๊ฒŒ ๊ณต์ฃผ๋ฅผ ๊ตฌํ•˜๋Ÿฌ ๊ฐ„๋‹ค.

N๊ณผ K๊ฐ€ ์ฃผ์–ด์งˆ ๋•Œ ๊ณต์ฃผ๋ฅผ ๊ตฌํ•˜๋Ÿฌ ๊ฐˆ ์™•์ž์˜ ๋ฒˆํ˜ธ๋ฅผ ์ถœ๋ ฅํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•˜์‹œ์˜ค.

๐Ÿ’ solution code

const solution = (n, k) => {
  let answer = 0;
  let queue = Array.from({ length: n }, (v, i) => i + 1);

  while (queue.length) {
    for (let i = 1; i < k; i++) {
      queue.push(queue.shift());
    }
    queue.shift();
    if (queue.length === 1) answer = queue.shift();
    }
  }
};
console.log(solution(8, 3));
  • ํ›„์ž…์„ ์ถœ์ด ํ•„์š”ํ•œ ๋ฌธ์ œ๋ผ์„œ stack ์•„๋‹Œ queue ์‚ฌ์šฉ!

  • Array.from({ length: n }, (v, i) => i + 1)

    • from ์„ ์‚ฌ์šฉํ•ด์„œ 1๋ถ€ํ„ฐ n๊นŒ์ง€์˜ ๋ฐฐ์—ด์„ ์ƒ์„ฑํ•œ๋‹ค.
      [1, 2, 3, 4, 5, 6 ... n]
  • queue์— ์™•์ž๋“ค์ด ๋‚จ์•„ ์žˆ์œผ๋ฉด ๊ณ„์†ํ•ด์„œ while๋ฌธ์„ ๋ˆ๋‹ค.

    • while๋ฌธ์— ๋“ค์–ด์˜ค๋ฉด 1๋ถ€ํ„ฐ k๋งŒํผ for๋ฌธ์„ ๋Œ๋ฉด์„œ ํ์˜ ๊ฐ€์žฅ ์•ž์— ์žˆ๋Š” ์š”์†Œ๋ฅผ shift()๋กœ ๋นผ๋‚ด์„œ push()๋กœ ๋‹ค์‹œ ๋’ค๋กœ ๋„ฃ๋Š”๋‹ค(๊ฐ์ž ์ˆซ์ž ์™ธ์น˜๊ณ  ๋’ค๋กœ ๋น ์ง€๋Š” ๊ณผ์ •)

    • k - 1 ๋ช…์ด ๊ฐ์ž์˜ ์ˆซ์ž๋ฅผ ์™ธ์น˜๊ณ  ๋’ค๋กœ ๊ฐ€์„œ ๋‹ค์‹œ ์ค„ ์„œ๋Š” ๊ฒƒ ๋๋‚ด๋ฉด ์ด์ œ k๋ฅผ ์™ธ์น˜๋Š” ์™•์ž๊ฐ€ ๋“ฑ์žฅํ–ˆ์œผ๋‹ˆ ๊ทธ ์™•์ž๋Š” shift()ํ•ด์„œ ๋นผ์ค€๋‹ค. ๊ณต์ฃผ๋ฅผ ๊ตฌํ•˜๋Ÿฌ ๊ฐˆ ์™•์ž ๋ฆฌ์ŠคํŠธ์—์„œ ์ œ์™ธ ๋˜๊ณ  ์› ๋ฐ–์œผ๋กœ ๋น ์ง„ ๊ฒƒ.

    • k๋ฅผ ์™ธ์นœ ์™•์ž ๋นผ๊ณ  ๋‚œ ๋’ค, ํ์˜ ๊ธธ์ด๊ฐ€ 1์ด๋ผ๋ฉด ํ˜„์žฌ ํ์— ๋งˆ์ง€๋ง‰ ์™•์ž๋งŒ ๋‚จ์•„์žˆ๋‹ค๋Š” ๊ฒƒ! ๋”ฐ๋ผ์„œ answer์˜ ๊ฐ’์„ ํ์— ๋งˆ์ง€๋ง‰์œผ๋กœ ๋‚จ์€ ์™•์ž์˜ ๋ฒˆํ˜ธ๋กœ ์„ค์ •ํ•œ๋‹ค.

profile
๋ชฉํ‘œ๋Š” "ํ•จ๊ป˜ ์ผํ•˜๊ณ  ์‹ถ์€, ํ•จ๊ป˜ ์ผํ•ด์„œ ์ข‹์€" Front-end ๊ฐœ๋ฐœ์ž

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