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

๋ฌธ์ œ

๋ฌธ์ œ ์„ค๋ช…

๋‹ค์Œ ๊ทœ์น™์„ ์ง€ํ‚ค๋Š” ๋ฌธ์ž์—ด์„ ์˜ฌ๋ฐ”๋ฅธ ๊ด„ํ˜ธ ๋ฌธ์ž์—ด์ด๋ผ๊ณ  ์ •์˜ํ•ฉ๋‹ˆ๋‹ค.

  • (), [], {} ๋Š” ๋ชจ๋‘ ์˜ฌ๋ฐ”๋ฅธ ๊ด„ํ˜ธ ๋ฌธ์ž์—ด์ž…๋‹ˆ๋‹ค.
  • ๋งŒ์•ฝ A๊ฐ€ ์˜ฌ๋ฐ”๋ฅธ ๊ด„ํ˜ธ ๋ฌธ์ž์—ด์ด๋ผ๋ฉด, (A), [A], {A} ๋„ ์˜ฌ๋ฐ”๋ฅธ ๊ด„ํ˜ธ ๋ฌธ์ž์—ด์ž…๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, [] ๊ฐ€ ์˜ฌ๋ฐ”๋ฅธ ๊ด„ํ˜ธ ๋ฌธ์ž์—ด์ด๋ฏ€๋กœ, ([]) ๋„ ์˜ฌ๋ฐ”๋ฅธ ๊ด„ํ˜ธ ๋ฌธ์ž์—ด์ž…๋‹ˆ๋‹ค.
  • ๋งŒ์•ฝ A, B๊ฐ€ ์˜ฌ๋ฐ”๋ฅธ ๊ด„ํ˜ธ ๋ฌธ์ž์—ด์ด๋ผ๋ฉด, AB ๋„ ์˜ฌ๋ฐ”๋ฅธ ๊ด„ํ˜ธ ๋ฌธ์ž์—ด์ž…๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, {} ์™€ ([]) ๊ฐ€ ์˜ฌ๋ฐ”๋ฅธ ๊ด„ํ˜ธ ๋ฌธ์ž์—ด์ด๋ฏ€๋กœ, {}([]) ๋„ ์˜ฌ๋ฐ”๋ฅธ ๊ด„ํ˜ธ ๋ฌธ์ž์—ด์ž…๋‹ˆ๋‹ค.

๋Œ€๊ด„ํ˜ธ, ์ค‘๊ด„ํ˜ธ, ๊ทธ๋ฆฌ๊ณ  ์†Œ๊ด„ํ˜ธ๋กœ ์ด๋ฃจ์–ด์ง„ ๋ฌธ์ž์—ด s๊ฐ€ ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ์ฃผ์–ด์ง‘๋‹ˆ๋‹ค. ์ด s๋ฅผ ์™ผ์ชฝ์œผ๋กœ x (0 ≤ x < (s์˜ ๊ธธ์ด)) ์นธ๋งŒํผ ํšŒ์ „์‹œ์ผฐ์„ ๋•Œ s๊ฐ€ ์˜ฌ๋ฐ”๋ฅธ ๊ด„ํ˜ธ ๋ฌธ์ž์—ด์ด ๋˜๊ฒŒ ํ•˜๋Š” x์˜ ๊ฐœ์ˆ˜๋ฅผ return ํ•˜๋„๋ก solution ํ•จ์ˆ˜๋ฅผ ์™„์„ฑํ•ด์ฃผ์„ธ์š”.


์ œํ•œ์‚ฌํ•ญ

  • s์˜ ๊ธธ์ด๋Š” 1 ์ด์ƒ 1,000 ์ดํ•˜์ž…๋‹ˆ๋‹ค.

์ž…์ถœ๋ ฅ ์˜ˆ

sresult

"[](){}" 3
"}]()[{" 2
"[)(]" 0
"}}}" 0

์ž…์ถœ๋ ฅ ์˜ˆ ์„ค๋ช…

์ž…์ถœ๋ ฅ ์˜ˆ #1

  • ๋‹ค์Œ ํ‘œ๋Š” "[](){}" ๋ฅผ ํšŒ์ „์‹œํ‚จ ๋ชจ์Šต์„ ๋‚˜ํƒ€๋‚ธ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

xs๋ฅผ ์™ผ์ชฝ์œผ๋กœ x์นธ๋งŒํผ ํšŒ์ „์˜ฌ๋ฐ”๋ฅธ ๊ด„ํ˜ธ ๋ฌธ์ž์—ด?

0 "[](){}" O
1 "](){}[" X
2 "(){}[]" O
3 "){}[](" X
4 "{}[]()" O
5 "}[](){" X
  • ์˜ฌ๋ฐ”๋ฅธ ๊ด„ํ˜ธ ๋ฌธ์ž์—ด์ด ๋˜๋Š” x๊ฐ€ 3๊ฐœ์ด๋ฏ€๋กœ, 3์„ return ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์ž…์ถœ๋ ฅ ์˜ˆ #2

  • ๋‹ค์Œ ํ‘œ๋Š” "}]()[{" ๋ฅผ ํšŒ์ „์‹œํ‚จ ๋ชจ์Šต์„ ๋‚˜ํƒ€๋‚ธ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

xs๋ฅผ ์™ผ์ชฝ์œผ๋กœ x์นธ๋งŒํผ ํšŒ์ „์˜ฌ๋ฐ”๋ฅธ ๊ด„ํ˜ธ ๋ฌธ์ž์—ด?

0 "}]()[{" X
1 "]()[{}" X
2 "()[{}]" O
3 ")[{}](" X
4 "[{}]()" O
5 "{}]()[" X
  • ์˜ฌ๋ฐ”๋ฅธ ๊ด„ํ˜ธ ๋ฌธ์ž์—ด์ด ๋˜๋Š” x๊ฐ€ 2๊ฐœ์ด๋ฏ€๋กœ, 2๋ฅผ return ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์ž…์ถœ๋ ฅ ์˜ˆ #3

  • s๋ฅผ ์–ด๋–ป๊ฒŒ ํšŒ์ „ํ•˜๋”๋ผ๋„ ์˜ฌ๋ฐ”๋ฅธ ๊ด„ํ˜ธ ๋ฌธ์ž์—ด์„ ๋งŒ๋“ค ์ˆ˜ ์—†์œผ๋ฏ€๋กœ, 0์„ return ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์ž…์ถœ๋ ฅ ์˜ˆ #4

  • s๋ฅผ ์–ด๋–ป๊ฒŒ ํšŒ์ „ํ•˜๋”๋ผ๋„ ์˜ฌ๋ฐ”๋ฅธ ๊ด„ํ˜ธ ๋ฌธ์ž์—ด์„ ๋งŒ๋“ค ์ˆ˜ ์—†์œผ๋ฏ€๋กœ, 0์„ return ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๋ฌธ์ œํ’€์ด

https://choi95.tistory.com/74

 

[์Šคํƒ]์˜ฌ๋ฐ”๋ฅธ ๊ด„ํ˜ธ

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

choi95.tistory.com

๊ด„ํ˜ธ์˜ ํ•œ ์Œ์„ ์ฐพ๋Š”๋‹ค๋Š” ์ „์ฒด์ ์ธ ๋กœ์ง์€ ๋น„์Šทํ•˜๋‚˜, ํ•ด๋‹น ๋ฌธ์ œ๋Š” ๊ด„ํ˜ธ์˜ ์ข…๋ฃŒ ๊ฐฏ์ˆ˜๊ฐ€ ์ด 3๊ฐœ์ด๊ธฐ ๋•Œ๋ฌธ์— ์–ด๋–ค ์ข…๋ฅ˜์˜ ๊ด„ํ˜ธ๊ฐ€ ์•ž์„œ ๋น ์ ธ๋‚˜๊ฐ”๋Š”์ง€์— ๋Œ€ํ•ด์„œ ์‹๋ณ„ํ•ด์ฃผ์–ด์•ผ ๋˜๋ฉฐ ๋น ์ ธ๋‚˜๊ฐ„ ๊ด„ํ˜ธ์™€ ์Œ์„ ์ด๋ฃจ๋Š” ๋‹ซ๋Š” ๊ด„ํ˜ธ์ธ์ง€๋„ ํ™•์ธํ•ด ์ฃผ์–ด์•ผ ํ•œ๋‹ค.

 

์ฝ”๋“œ

function isCorrect(str) {
  let result = true;
  let stack = [];
  let regExp = /[\[\(\{]/;
  
  for(let x of str) {
    if(regExp.test(x)) stack.push(x);
    else {
      if(stack.length === 0) return false;
      let lp = stack[stack.length - 1];

      if(lp === '(') { //๊ด„ํ˜ธ์˜ ์ข…๋ฅ˜์— ๋”ฐ๋ฅธ ๋ถ„๊ธฐ ์ฒ˜๋ฆฌ(์•„์Šคํ‚ค์ฝ”๋“œ ๊ฐ’์„ ์‚ฌ์šฉ)
        if(lp.charCodeAt() + 1 === x.charCodeAt()) stack.pop();
      }
      else {
        if(lp.charCodeAt() + 2 === x.charCodeAt()) stack.pop();
      }
      
    }
  }
  if(stack.length > 0) return false;
  return result;
}

function solution(s) {
  var answer = 0;
  
  for(let i = 0; i < s.length; i++) { //๋ฌธ์ž์—ด์˜ ๊ธธ์ด๋งŒํผ ํšŒ์ „ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋ฌธ์ž์—ด์˜ ์ด ๊ธธ์ด๋งŒํผ ์ˆœํšŒ
    let stack = s.split('');
    let index = i; //ํšŒ์ „ ์ˆ˜
    while(index) {
      stack.push(stack.shift());
      index--;
    }
    if(isCorrect(stack.join(''))) answer++;
  }

  return answer;
}

 

๊ฐœ์„ ์ 

๊ด„ํ˜ธ์˜ ํ•œ ์Œ์ด ๋˜๋Š”์ง€ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•ด์„œ charCodeAt()์„ ์‚ฌ์šฉํ•œ ์—ฐ์‚ฐ ๊ณผ์ •์„ ๊ฑฐ์ณค๋‹ค.

์ •ํ™•์„ฑ ํ…Œ์ŠคํŠธ๋Š” ๋ชจ๋‘ ํ†ต๊ณผํ•˜์˜€์ง€๋งŒ ์ˆ˜ํ–‰ ์‹œ๊ฐ„์ด ํ‰๊ท  100ms๋ฅผ ๋„˜์„ ์ •๋„๋กœ ์‹œ๊ฐ„ ๋ณต์žก๋„ ์ƒ ๋งค์šฐ ๋น„ํšจ์œจ์ ์ธ ์ฝ”๋“œ์ž„์„ ํ™•์ธํ•˜์˜€๋‹ค.์•„๋งˆ charCodeAt() ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ณผ์ •์—์„œ ์—ฐ์‚ฐ ์ˆ˜ํ–‰ ๊ณผ์ •์ด ๊ธธ์–ด์ง„ ๊ฒƒ ๊ฐ™์€๋ฐ, ์ด์™€ ๊ด€๋ จํ•ด์„œ ํ–ฅํ›„ ๊ฐœ์„ ํ•œ ๋กœ์ง์„ ์งœ ๋ด์•ผ๊ฒ ๋‹ค.

๋Œ“๊ธ€
๊ณต์ง€์‚ฌํ•ญ
์ตœ๊ทผ์— ์˜ฌ๋ผ์˜จ ๊ธ€
์ตœ๊ทผ์— ๋‹ฌ๋ฆฐ ๋Œ“๊ธ€
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
๊ธ€ ๋ณด๊ด€ํ•จ