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

๋ฌธ์ œ

https://www.acmicpc.net/problem/1874

 

1874๋ฒˆ: ์Šคํƒ ์ˆ˜์—ด

1๋ถ€ํ„ฐ n๊นŒ์ง€์— ์ˆ˜์— ๋Œ€ํ•ด ์ฐจ๋ก€๋กœ [push, push, push, push, pop, pop, push, push, pop, push, push, pop, pop, pop, pop, pop] ์—ฐ์‚ฐ์„ ์ˆ˜ํ–‰ํ•˜๋ฉด ์ˆ˜์—ด [4, 3, 6, 8, 7, 5, 2, 1]์„ ์–ป์„ ์ˆ˜ ์žˆ๋‹ค.

www.acmicpc.net

 

๋ฌธ์ œํ’€์ด

  • ์ฃผ์–ด์ง„ ์ •์ˆ˜๊ฐ’์ด 0์œผ๋กœ ์ดˆ๊ธฐํ™” ๋œ max๋ณด๋‹ค ํด ๊ฒฝ์šฐ์— ํ•ด๋‹น ์ •์ˆ˜๊ฐ’๊นŒ์ง€ push ์—ฐ์‚ฐ
  • ํ•ด๋‹น ์ •์ˆ˜๊ฐ’๊นŒ์ง€ push๋œ stack ๋ฐฐ์—ด ๋‚ด์—์„œ ๋งˆ์ง€๋ง‰ ์ธ๋ฑ์Šค ์š”์†Œ์ธ ์ฃผ์–ด์ง„ ์ •์ˆ˜๊ฐ’์„ pop ์—ฐ์‚ฐ
  • max๊ฐ’์„ ์ฃผ์–ด์ง„ ์ •์ˆ˜๊ฐ’์œผ๋กœ ์ดˆ๊ธฐํ™”
  • ์ฃผ์–ด์ง„ ์ •์ˆ˜๊ฐ’์ด ์ด์ „ ์ •์ˆ˜๊ฐ’์œผ๋กœ ์ดˆ๊ธฐํ™” ๋œ max๊ฐ’๋ณด๋‹ค ์ž‘์„ ๊ฒฝ์šฐ์— ํ•ด๋‹น ์ •์ˆ˜๊ฐ’๊นŒ์ง€ pop์—ฐ์‚ฐ

์ฝ”๋“œ

function solution(arr) {
  let answer = [];
  let stack = [];
  let tmp = [];
  let max = 0;
  
  let newArr = arr.filter((v, i) => i !== 0).map(val => Number(val))  
  
  for(let x of newArr) {
    if(max < x) {
      for(let i = max; i < x; i++) {
        stack.push(i + 1);
        answer.push('push');
      }
      tmp.push(stack.pop());
      answer.push('pop');
      max = x;
    }
    else {
      while(stack[stack.length - 1] >= x) {
        tmp.push(stack.pop());
        answer.push('pop');
      }
    }
  }

  if(newArr.join('') !== tmp.join('')) return answer = 'NO';
  return answer.join('\n');
}

let arr = ['8', '4', '3', '6', '8', '7', '5', '2', '1'];
console.log(solution(arr));

์œ„์— ๋กœ์ง์ด ์™ธ๋ถ€ ํŽธ์ง‘๊ธฐ์—์„œ๋Š” ๋งž๋Š” ๊ฒƒ์œผ๋กœ ํ™•์ธ๋˜์—ˆ์ง€๋งŒ nodeJS ๋Ÿฐํƒ€์ž„ ํ™˜๊ฒฝ์—์„œ๋Š” ํ‹€๋ ธ๋‹ค๊ณ  ๋‚˜์˜จ๋‹ค.

ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค ์ค‘ ๊ฑธ๋งž์ง€ ์•Š์€ ์‚ฌํ•ญ์ด ์žˆ๊ฑฐ๋‚˜ ํ”„๋กœ๊ทธ๋žจ ์ž์ฒด์˜ ์˜ค๋ฅ˜์ผ ๊ฒƒ ๊ฐ™์€๋ฐ, ํ–ฅํ›„ ๋กœ์ง์„ ๋‹ค์‹œ ์ƒ๊ฐํ•ด ๋ณธ ๋’ค ๋„์ „ํ•ด ๋ณด๊ณ ์ž ํ•œ๋‹ค.

๋Œ“๊ธ€
๊ณต์ง€์‚ฌํ•ญ
์ตœ๊ทผ์— ์˜ฌ๋ผ์˜จ ๊ธ€
์ตœ๊ทผ์— ๋‹ฌ๋ฆฐ ๋Œ“๊ธ€
Total
Today
Yesterday
๋งํฌ
TAG
more
ยซ   2024/10   ยป
์ผ ์›” ํ™” ์ˆ˜ ๋ชฉ ๊ธˆ ํ† 
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
๊ธ€ ๋ณด๊ด€ํ•จ