๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
Algorithm/์ธํ”„๋Ÿฐ(inflearn)

[ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ(JavaScript) ] section06 - 5 - ์‡ ๋ง‰๋Œ€๊ธฐ

by YWTechIT 2021. 9. 2.
728x90

๐Ÿ“ section06 - 5 - ์‡ ๋ง‰๋Œ€๊ธฐ

์ด์ „์— ํ’€์–ด๋ดค๋˜ ๋ฌธ์ œ๋‹ค. ๋‹น์‹œ ์ฒ˜์Œ ํ’€ ๋•Œ๋Š” ์ด ๋ฌธ์ œ๋ฅผ ์™œ stack์œผ๋กœ ํ‘ธ๋Š”์ง€ ์ดํ•ด๊ฐ€ ์•ˆ ๋๋Š”๋ฐ, ๋‹ค์‹œ ๋ณด๋‹ˆ๊นŒ ์กฐ๊ธˆ์ด๋‚˜๋งˆ ์ดํ•ด๊ฐ€ ๋œ๋‹ค. ์ด์ „ stack ์œ ํ˜•๊ณผ๋Š” ๋‹ฌ๋ฆฌ stack[-1]๊ฐ’์„ ๋น„๊ตํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ์ฃผ์–ด์ง„ ๋ฌธ์ž์—ด s[i-1]์„ ๊ธฐ์ค€์œผ๋กœ ๋น„๊ตํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๊ทธ ๋ถ€๋ถ„์„ ์ž˜ ์บ์น˜ํ•ด์•ผ ๋ฌธ์ œ๋ฅผ ํ’€ ์ˆ˜ ์žˆ๋‹ค.

 

๊ทธ๋ฆฌ๊ณ  ๋ ˆ์ด์ €๋ฅผ ๋งŒ๋‚ฌ์„ ๋•Œ cnt๋ฅผ ๊ณ„์‚ฐํ•˜๋Š” ๋ฐฉ๋ฒ•์ด ์กฐ๊ธˆ ์–ด๋ ค์šธ ์ˆ˜ ์žˆ๋Š”๋ฐ, ๋ ˆ์ด์ €๋ฅผ ๋งŒ๋‚˜๊ฒŒ ๋˜๋ฉด ์ง€๊ธˆ๊นŒ์ง€ stack์— ๋“ค์–ด๊ฐ€ ์žˆ๋Š” (๊ธธ์ด๋งŒํผ ๋ˆ„์ ํ•ด์ฃผ๋ฉด ๋œ๋‹ค. ((๋Š” ์‡ ๋ง‰๋Œ€๊ธฐ๋ฅผ ์˜๋ฏธํ•จ) ๋ ˆ์ด์ €๋ฅผ ๋งŒ๋‚˜์ง€ ์•Š๊ณ  ์‡ ๋ง‰๋Œ€๊ธฐ (๋ฅผ ๋งŒ๋‚˜๊ฒŒ ๋˜๋ฉด cnt++์„ ํ•ด์ฃผ๋ฉด ๋œ๋‹ค.

 

  1. (๋Š” ๋ฌด์กฐ๊ฑด stack์— ๋„ฃ๋Š”๋‹ค.
  2. )๋ฅผ ๋งŒ๋‚  ๋•Œ stack.pop()์„ ํ•˜๋Š”๋ฐ, ์—ฌ๊ธฐ์„œ s[i-1]๊ฐ’์ด (์ด๋ผ๋ฉด ๋ ˆ์ด์ €(์™œ๋ƒํ•˜๋ฉด ๋ ˆ์ด์ €๋Š” ์—ฌ๋Š” ๊ด„ํ˜ธ์™€ ๋‹ซ๋Š” ๊ด„ํ˜ธ์˜ ์ธ์ ‘ํ•œ ์Œ ์ฆ‰, ()ํ˜•ํƒœ๋กœ๋งŒ ์ฃผ์–ด์ง€๊ธฐ ๋•Œ๋ฌธ)๊ธฐ ๋•Œ๋ฌธ์— stack๊ธธ์ด ๋งŒํผ cnt์— ๋ˆ„์ ํ•ด์ฃผ๊ณ  s[i-1] ๊ฐ’์ด )๋ผ๋ฉด ์‡ ๋ง‰๋Œ€๊ธฐ์ด๋ฏ€๋กœ cnt++์„ ํ•ด์ค€๋‹ค.
  3. ๋ฐ˜๋ณต๋ฌธ์ด ๋๋‚˜๋ฉด ์‡ ๋ง‰๋Œ€๊ธฐ์˜ ๊ฐœ์ˆ˜ cnt๋ฅผ returnํ•œ๋‹ค.

 

728x90

 

let s = "()(((()())(())()))(())"

console.log(solution(s));

function solution(s){
  let n = s.length;
  let stack = [];
  let cnt = 0;

  for (let i = 0; i < n; i++) {
    if (s[i] === "(") stack.push(s[i]);
    else {
      stack.pop();
      if (s[i - 1] === "(") cnt += stack.length;
      else cnt++;
    }
  }
  return cnt;
}
๋ฐ˜์‘ํ˜•

๋Œ“๊ธ€