Algorithm Problem/JavaScript

[javascript] ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค - ๊ด„ํ˜ธ ํšŒ์ „ํ•˜๊ธฐ(์›”๊ฐ„ ์ฝ”๋“œ ์ฑŒ๋ฆฐ์ง€ ์‹œ์ฆŒ2)

deo2kim 2021. 8. 14. 13:27
๋ฐ˜์‘ํ˜•

๐Ÿค”๋ฌธ์ œ ํ•ด๊ฒฐ

  1. ๊ด„ํ˜ธ ํšŒ์ „
  2. ๊ด„ํ˜ธ ์ฒดํฌ
    1. ์Šคํƒ์„ ์ด์šฉํ•˜์—ฌ ๊ด„ํ˜ธ์˜ ์ง์ด ๋งž๋Š”์ง€ ์ฒดํฌ
      1. ์ฃผ์–ด์ง„ ๊ด„ํ˜ธ(ํšŒ์ „์„ ๋งˆ์นœ ๊ด„ํ˜ธ)๋ฅผ ์ชผ๊ฐœ์„œ ํ•˜๋‚˜์”ฉ ๊ฐ€์ ธ์˜จ๋‹ค
        1. ๊ฐ€์ ธ์˜จ ๊ด„ํ˜ธ๊ฐ€ ์™ผ์ชฝ ๊ด„ํ˜ธ์ด๋ฉด ์Šคํƒ์— ๋„ฃ๊ณ 
        2. ์˜ค๋ฅธ์ชฝ ๊ด„ํ˜ธ์ด๋ฉด ์Šคํƒ์˜ ์ œ์ผ ์œ„์—์žˆ๋Š” ๊ด„ํ˜ธ์™€ ๋น„๊ตํ•˜์—ฌ ์ง์ด ๋งž๋Š”์ง€ ์ฒดํฌ
          1. ์ง์ด ๋งž์ง€ ์•Š์œผ๋ฉด ์˜ฌ๋ฐ”๋ฅธ ๊ด„ํ˜ธ๊ฐ€ ์•„๋‹ˆ๋‹ค.
        3. ์Šคํƒ์ด ๋น„์–ด์žˆ์œผ๋ฉด ์˜ฌ๋ฐ”๋ฅธ ๊ด„ํ˜ธ๊ฐ€ ์•„๋‹ˆ๋‹ค.
      2. ๊ด„ํ˜ธ ์ฒดํฌ๊ฐ€ ๋๋‚˜๊ณ  ์Šคํƒ์— ๋‚จ์•„์žˆ๋Š” ๊ด„ํ˜ธ๊ฐ€ ์žˆ์œผ๋ฉด ์˜ฌ๋ฐ”๋ฅธ ๊ด„ํ˜ธ๊ฐ€ ์•„๋‹ˆ๋‹ค

๐Ÿ’จ ์˜ค๋ธŒ์ ํŠธ์˜ ํ‚ค, ๋ฐธ๋ฅ˜ ๊ฐ€์ ธ์˜ค๊ธฐ: Object.keys(my_object), Object.values(my_object)

๐Ÿ’จ ๋ฐฐ์—ด์— ํŠน์ • ์š”์†Œ ํฌํ•จ ์—ฌ๋ถ€: my_list.includes(my_elem)

 

๐Ÿ’ป์†Œ์Šค ์ฝ”๋“œ

function solution(s) {
  var answer = 0;

  var length = s.length;
  if (length % 2 == 1) return 0; // ๊ด„ํ˜ธ์˜ ๊ฐœ์ˆ˜๊ฐ€ ์ง์ˆ˜๊ฐ€ ์•„๋‹ˆ๋ฉด false

  for (var i = 0; i < length; i++) {
    var rotatedS = s.substring(i, length) + s.substring(0, i);
    if (isParenRight(rotatedS)) answer++;
  }
  return answer;
}

function isParenRight(paren) {
  var parenCouple = { '[': ']', '{': '}', '(': ')' };
  var parenList = paren.split('').reverse();

  var stack = [];
  while (parenList.length > 0) {
    var currentParen = parenList.pop();
    if (Object.keys(parenCouple).includes(currentParen)) {
      // ์™ผ์ชฝ ๊ด„ํ˜ธ์ด๋ฉด stack์— ๋„ฃ๊ณ 
      stack.push(currentParen);
    } else {
      // ์˜ค๋ฅธ์ชฝ ๊ด„ํ˜ธ์ด๋ฉด ์Šคํƒ์˜ ์ œ์ผ ์œ„ ๊ด„ํ˜ธ์™€ ๋น„๊ต
      if (stack.length > 0) {
        var beforeParen = stack.pop();
        if (parenCouple[beforeParen] !== currentParen) return false; // ์ง์ด ๋งž์ง€ ์•Š์œผ๋ฉด false
      } else {
        // ์˜ค๋ฅธ์ชฝ ๊ด„ํ˜ธ์ด๋ฉด์„œ ์Šคํƒ์ด ๋น„์–ด์žˆ์œผ๋ฉด false
        return false;
      }
    }
  }

  return true;
}

 

๐Ÿ“•๋ฌธ์ œ ํ™•์ธ

์ถœ์ฒ˜: ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค

๋ฐ˜์‘ํ˜•