ํ‹ฐ์Šคํ† ๋ฆฌ ๋ทฐ

๋ฌธ์ œ

 

๋ฌธ์ œํ’€์ด

  • 1๋ฒˆ ์™•์ž๋ถ€ํ„ฐ 8๋ฒˆ ์™•์ž๊นŒ์ง€ ํ•œ ์ž๋ฆฌ์— ๋ชจ์—ฌ๋†“๊ธฐ ์œ„ํ•ด ๊ฐ ์™•์ž์˜ ๋Œ€ํ‘œ๋˜๋Š” ๋ฒˆํ˜ธ๋“ค์„ ์Šคํƒ์— ์ˆœ์„œ๋Œ€๋กœ ์ €์žฅ
  • ๋ฒˆํ˜ธ๊ฐ€ ์ €์žฅ๋œ ์Šคํƒ์„ ์ˆœํšŒํ•˜๋ฉด์„œ K ์ฐจ๋ก€๊ฐ€ ๋ ๋•Œ๋งˆ๋‹ค ํ•ด๋‹น ์ธ๋ฑ์Šค์˜ ์š”์†Œ๋ฅผ ์Šคํƒ์—์„œ ์‚ญ์ œ
  • ๋งŒ์•ฝ์— ํ•ด๋‹น ์Šคํƒ์„ ๋๊นŒ์ง€ ๋Œ์•˜๋‹ค๋ฉด ๋‹ค์‹œ ์ฒ˜์Œ์œผ๋กœ ํšŒ๊ท€ํ•˜๊ธฐ ์œ„ํ•ด ์ž„์˜์˜ ํฌ์ธํ„ฐ๋ฅผ ์ธ๋ฑ์Šค 0์œผ๋กœ ์ดˆ๊ธฐํ™”
  • ์œ„์™€ ๊ฐ™์€ ์—ฐ์‚ฐ์„ ์Šคํƒ์˜ ์‚ฌ์ด์ฆˆ๊ฐ€ 1(๋งˆ์ง€๋ง‰์— ๋‚จ์€ ์™•์ž)์ด ๋ ๋•Œ๊นŒ์ง€ ๋ฐ˜๋ณต ์ˆ˜ํ–‰

์ฝ”๋“œ

function solution(n, k) {
  let answer = 0;
  let stack = Array.from({ length: n }, (v, i) => i + 1); 
  let pt = 0; //์Šคํƒ์˜ ์ธ๋ฑ์Šค ์š”์†Œ๋“ค์„ ์ฐธ์กฐํ•˜๊ธฐ ์œ„ํ•œ ์ž„์˜์˜ ํฌ์ธํ„ฐ
  let call = 0; //K๋ฒˆ์งธ์— ํ•ด๋‹นํ•˜๋Š” ์ธ๋ฑ์Šค ์š”์†Œ๋ฅผ ์‚ญ์ œํ•ด์ฃผ๊ธฐ ์œ„ํ•œ ์ฐธ์กฐ ๋ณ€์ˆ˜

  while (stack.length !== 1) { //๋งˆ์ง€๋ง‰ ํ•˜๋‚˜๊ฐ€ ๋‚จ์„ ๋•Œ๊นŒ์ง€ ๋ฐ˜๋ณต
    call++;
    pt++;
    if (call === 3) { //K๋ฒˆ์งธ์— ํ•ด๋‹นํ•  ๋•Œ
      stack.splice(pt - 1, 1); 
      call = 0; // ๋‹ค์Œ ์™•์ž๋ถ€ํ„ฐ ๋‹ค์‹œ 1๋ถ€ํ„ฐ ์‹œ์ž‘ํ•˜๊ธฐ ์œ„ํ•ด 0์œผ๋กœ ์ดˆ๊ธฐํ™”
      pt--; splice()๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•จ์œผ๋กœ์จ ๋ฐฐ์—ด ์š”์†Œ๋“ค์ด ํ•˜๋‚˜์”ฉ ์•ž์œผ๋กœ ๋‹น๊ฒจ์ง€๊ธฐ ๋•Œ๋ฌธ์— ํฌ์ธํ„ฐ๊ฐ€ ๋‹ค์Œ ์ธ๋ฑ์Šค ์š”์†Œ๋ฅผ ์ •์ƒ์ ์œผ๋กœ ์ฐธ์กฐํ•˜๊ธฐ ์œ„ํ•ด 1๊ฐ์‚ฐ
    }
    if (stack[pt - 1] === stack[stack.length - 1]) { //ํฌ์ธํ„ฐ๊ฐ€ ์Šคํƒ์˜ ์š”์†Œ๋ฅผ ๋ชจ๋‘ ์ˆœํšŒํ–ˆ์„ ๊ฒฝ์šฐ
      pt = 0; //๋‹ค์‹œ ์•ž์—์„œ๋ถ€ํ„ฐ ์ฐธ์กฐํ•ด์ฃผ๊ธฐ ์œ„ํ•ด 0์œผ๋กœ ์ดˆ๊ธฐํ™”
    }
  }

  answer = Number(stack.join(""));

  return answer;
}

console.log(solution(8, 3));

 

๋ฌธ์ œํ’€์ด_ํ

ํ(Queue)

  • ํ๋Š” ํ•œ์ชฝ ๋์—์„œ ์ž๋ฃŒ๋ฅผ ์ถ”๊ฐ€ํ•˜๊ณ  ํ•œ์ชฝ ๋์—์„œ ์ž๋ฃŒ๋ฅผ ๊บผ๋‚ด๋Š” ์„ ํ˜• ์ž๋ฃŒ ๊ตฌ์กฐ
  • FIFO(First in First Out)_์„ ์ž…์„ ์ถœ ๋ฐฉ์‹

  • 1๋ฒˆ๋ถ€ํ„ฐ 8๋ฒˆ๊นŒ์ง€ ์ €์žฅ๋œ ์Šคํƒ์„ ์•ž์—์„œ๋ถ€ํ„ฐ ์ฐจ๋ก€๋Œ€๋กœ K๋ฒˆ์งธ๊ฐ€ ๋ ๋•Œ๊นŒ์ง€ ๋นผ์คŒ
  • K๋ฒˆ์งธ ์ด์ „๊นŒ์ง€์˜ ์ธ๋ฑ์Šค ์š”์†Œ๋Š” ์ˆœํšŒ ๋ฐ˜๋ณต์„ ์œ„ํ•ด ๋‹ค์‹œ ์Šคํƒ์˜ ๋’ค์— ์ €์žฅ
  • K๋ฒˆ์งธ์— ํ•ด๋‹นํ•˜๋Š” ์ธ๋ฑ์Šค ์š”์†Œ๋Š” ์•ž์—์„œ ๊ทธ๋Œ€๋กœ ๋นผ์„œ ์‚ญ์ œ

์ฝ”๋“œ

function 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()); //K๋ฒˆ์งธ ์ด์ „๊นŒ์ง€๋Š” ์•ž์—์„œ ์ถ”์ถœํ•˜๊ณ  ์ด๋ฅผ ๋‹ค์‹œ ๋’ค์— ์ ์žฌ
    queue.shift(); //K๋ฒˆ์งธ ์ผ๋•Œ๋Š” ๊ทธ๋Œ€๋กœ ์ถ”์ถœํ•˜๊ธฐ๋งŒ ํ•จ
    if(queue.length === 1) answer = queue.shift();
  }

  return answer;
}

console.log(solution(8, 3));

 

๋Œ“๊ธ€
๊ณต์ง€์‚ฌํ•ญ
์ตœ๊ทผ์— ์˜ฌ๋ผ์˜จ ๊ธ€
์ตœ๊ทผ์— ๋‹ฌ๋ฆฐ ๋Œ“๊ธ€
Total
Today
Yesterday
๋งํฌ
TAG
more
ยซ   2025/01   ยป
์ผ ์›” ํ™” ์ˆ˜ ๋ชฉ ๊ธˆ ํ† 
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
๊ธ€ ๋ณด๊ด€ํ•จ