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

๋ฌธ์ œ

๊ด„ํ˜ธ๊ฐ€ ์ž…๋ ฅ๋˜๋ฉด ์˜ฌ๋ฐ”๋ฅธ ๊ด„ํ˜ธ์ด๋ฉด "YES", ์˜ฌ๋ฐ”๋ฅด์ง€ ์•Š์œผ๋ฉด "NO"๋ฅผ ์ถœ๋ ฅํ•ฉ๋‹ˆ๋‹ค.(())() ์ด๊ฒƒ์€ ๊ด„ํ˜ธ์˜ ์Œ์ด ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ์œ„์น˜ํ•˜๋Š” ๊ฑฐ์ง€๋งŒ, (()()))) ์€ ์˜ฌ๋ฐ”๋ฅธ ๊ด„ํ˜ธ๊ฐ€ ์•„๋‹ˆ๋‹ค.

 

๋ฌธ์ œํ’€์ด

 

์Šคํƒ

  • ์Šคํƒ(stack)์€ ์ œํ•œ์ ์œผ๋กœ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋Š” ์ˆœ์ฐจ ๋ฆฌ์ŠคํŠธ(๋‚˜์—ด) ์ž๋ฃŒ ๊ตฌ์กฐ
  • FIFO(First In Last Out) ์„ ์ž… ํ›„์ถœ: ์ฒ˜์Œ์— ๋“ค์–ด๊ฐ„ ๊ฒƒ์ด ๋‚˜์ค‘์— ๋‚˜์˜ค๋„๋ก ๋˜์–ด ์žˆ๋Š” ์ž๋ฃŒ ๊ตฌ์กฐ
  • ์š”์†Œ์˜ ์‚ฝ์ž…๊ณผ ์‚ญ์ œ๊ฐ€ ์ž๋ฃŒ ๊ตฌ์กฐ์˜ ํ•œ์ชฝ ๋์—์„œ๋งŒ ์ด๋ฃจ์–ด์ง€๋Š” ๊ฒƒ์ด ํŠน์ง•
  • push ์—ฐ์‚ฐ: ์ž๋ฃŒ๊ตฌ์กฐ ๋‚ด์— ๋น„์–ด ์žˆ๋Š” ๋ ๊ณต๊ฐ„์— ๋ฐ์ดํ„ฐ ์ ์žฌ
  • pop ์—ฐ์‚ฐ: ์ž๋ฃŒ๊ตฌ์กฐ ๋‚ด์— ๋์— ์žˆ๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์‚ญ์ œ


๊ด„ํ˜ธ๋Š” ์—ฌ๋Š” ๊ด„ํ˜ธ์™€ ๋‹ซ๋Š” ๊ด„ํ˜ธ๊ฐ€ ํ•œ ์Œ์ด๋‹ค.

์™„์ „ํ•œ ๊ด„ํ˜ธ๊ฐ€ ๋˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ๊ฐ ๊ด„ํ˜ธ๊ฐ€ ํ•œ ์Œ์ด ์ด๋ฃจ์–ด์ ธ์•ผ ํ•œ๋‹ค. 

 

์ด๋ฅผ ์œ„ํ•ด ๋‹ค์Œ ๊ทธ๋ฆผ๊ณผ ๊ฐ™์ด ์—ฌ๋Š” ๊ด„ํ˜ธ๊ฐ€ ๋ฌธ์ž์—ด ๋‚ด์— ๋‚˜์˜ค๋ฉด ์ž๋ฃŒ๊ตฌ์กฐ์— ์ ์žฌํ•œ๋‹ค. ์ดํ›„์— ์—ฌ๋Š” ๊ด„ํ˜ธ๊ฐ€ ์—ฐ์†์ ์œผ๋กœ ๋‚˜์˜ค๊ฒŒ ๋œ๋‹ค๋ฉด

๊ณ„์†ํ•ด์„œ ์ž๋ฃŒ๊ตฌ์กฐ์— ๋‹ค์Œ ์ธ๋ฑ์Šค์— ์ ์žฌํ•œ๋‹ค. 

 

๋งŒ์•ฝ ๋‹ซ๋Š” ๊ด„ํ˜ธ๊ฐ€ ๋ฌธ์ž์—ด ๋‚ด์—์„œ ์ฐธ์กฐํ•˜๊ฒŒ ๋  ๊ฒฝ์šฐ ์ ์žฌํ–ˆ์—ˆ๋˜ ์—ฌ๋Š” ๊ด„ํ˜ธ๋ฅผ ์ž๋ฃŒ๊ตฌ์กฐ ๋‚ด์—์„œ ์—†์• ์ค€๋‹ค.

์ด๋•Œ ์—ฌ๋Š” ๊ด„ํ˜ธ๊ฐ€ ๊ธฐ์กด์˜ ์ž๋ฃŒ๊ตฌ์กฐ ๋‚ด์— ํ•˜๋‚˜๋„ ์—†๋‹ค๋ฉด ๋ฐ์ดํ„ฐ๋ฅผ ์—†์• ์ฃผ๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ํ˜„์žฌ ์ฐธ์กฐํ•˜๊ณ  ์žˆ๋Š” ๋‹ซ๋Š” ๊ด„ํ˜ธ๋ฅผ ์ž๋ฃŒ๊ตฌ์กฐ ๋‚ด์— ์ ์žฌํ•ด ์ค€๋‹ค.

 

์œ„์™€ ๊ฐ™์€ ์—ฐ์‚ฐ์„ ๋ฌธ์ž์—ด ๋๊นŒ์ง€ ๋ฐ˜๋ณตํ–ˆ์„ ๊ฒฝ์šฐ ์™„์ „ํ•œ ๊ด„ํ˜ธ์ผ ๊ฒฝ์šฐ์—๋Š” ์ž๋ฃŒ๊ตฌ์กฐ ๋‚ด์—๋Š” ์–ด๋– ํ•œ ๋‹ซ๋Š” ๊ด„ํ˜ธ๊ฐ€ ์กด์žฌํ•ด์„œ๋Š” ์•ˆ๋œ๋‹ค.

๋‹ซ๋Š” ๊ด„ํ˜ธ๊ฐ€ ์ž๋ฃŒ๊ตฌ์กฐ ๋‚ด์— ํ•˜๋‚˜๋ผ๋„ ๋‚จ์•„์žˆ๋‹ค๋ฉด ์ด๋Š” ํ•œ ์Œ์„ ์ฐพ๋Š” ๋ฐ ์‹คํŒจํ•ด์„œ ๋‚จ์€ ์ž”์—ฌ ๊ด„ํ˜ธ๊ฐ€ ์žˆ๋‹ค๋Š” ์ ์„ ์˜๋ฏธํ•˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

 

์ฝ”๋“œ

function solution(str) {
  let answer = "YES";
  let lp = "(";
  let rp = ")";
  let lpNum = 0; // ํ˜„์žฌ ๋‚จ์•„ ์žˆ๋Š” lp(์—ฌ๋Š” ๊ด„ํ˜ธ)์˜ ๊ฐฏ์ˆ˜
  let checkArr = [];

  for(let x of str) {
    if(x === lp) {
      checkArr.push(1);
      lpNum++;
    }
    if(lpNum === 0 && x === rp) { //๋‚จ์•„ ์žˆ๋Š” lp๊ฐ€ ์—†์„ ๊ฒฝ์šฐ_๋‚จ์•„ ์žˆ๋Š” ๋‹ซ๋Š” ๊ด„ํ˜ธ๋ฅผ ์ ์žฌ
      checkArr.push(1);
    }
    if(lpNum > 0 && x === rp) { //๋‚จ์•„ ์žˆ๋Š” lp๊ฐ€ ์žˆ์„ ๊ฒฝ์šฐ
      checkArr.pop();
      lpNum--;
    }
  }
  if(checkArr.length !== 0) answer = "NO";
  return answer;
}

let str = "(()(()))(()"
console.log(solution(str));

function solution(str) {
  let answer = "YES";
  let stack = [];

  for(let x of str) {
    if(x === '(') stack.push(x);
    else {
      if(stack.length === 0) return "NO";
      stack.pop(x);
    }
  }
  if(stack.length > 0) return "NO";
  return answer;
}

let str = "(()(()))(()"
console.log(solution(str));
๋Œ“๊ธ€
๊ณต์ง€์‚ฌํ•ญ
์ตœ๊ทผ์— ์˜ฌ๋ผ์˜จ ๊ธ€
์ตœ๊ทผ์— ๋‹ฌ๋ฆฐ ๋Œ“๊ธ€
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
๊ธ€ ๋ณด๊ด€ํ•จ