Skip to content

[Leetcode] 20. Valid Parentheses โ€‹

Problem โ€‹

๋ฌธ์ œ ๋งํฌ

๊ด„ํ˜ธ (,),[,],{,}๊ฐ€ ์ฃผ์–ด์ง€๋ฉด ๊ด„ํ˜ธ์˜ ์—ด๊ณ  ๋‹ซํžˆ๋Š” ์ˆœ์„œ๊ฐ€ ์˜ฌ๋ฐ”๋ฅธ์ง€ ํ™•์ธ

Solution โ€‹

  1. ๋ฌธ์ž์—ด์„ ์ˆœ์ฐจ์ ์œผ๋กœ ๋ฐ›๋Š”๋‹ค.
  2. ๊ด„ํ˜ธ๊ฐ€ ์—ด๋ฆฌ๋ฉด stack์— ์ง‘์–ด๋„ฃ๊ณ , ๋‹ซํžˆ๋Š” ๋ถ€๋ถ„์ด๋ผ๋ฉด stack์—์„œ ๋บ€๋‹ค.
  3. stack์—์„œ ๋บ€ ๊ฐ’๊ณผ ๊ด„ํ˜ธ๊ฐ€ ๋‹ซํžˆ ๋ฌธ์ž์™€ ๋งคํ•‘๋˜๋Š” ์—ด๋ฆฌ๋Š” ๊ด„ํ˜ธ๋ฅผ ๋น„๊ตํ•œ๋‹ค.
  4. ๋ชจ๋“  ๋ฌธ์ž์—ด์„ ๋น„๊ต ํ›„ ์Šคํƒ์ด ๋น„์–ด์žˆ์ง€์•Š์œผ๋ฉด ๊ด„ํ˜ธ์˜ ์Œ์˜ ์ˆ˜๊ฐ€ ๋งž์ง€ ์•Š์œผ๋ฏ€๋กœ false๋ฅผ ๋ฆฌํ„ดํ•œ๋‹ค.

JS CODE โ€‹

javascript
/**
 * @param {string} s
 * @return {boolean}
 */
var isValid = function(s) {
    let stack = []
    const mapping = {
        ')':'(',
        '}':'{',
        ']':'['
    }

    for(const c of s) {
        if (/[\(\[\{]/.test(c)) stack.push(c)
        else if (stack.pop() !== mapping[c]) return false
    }

    return stack.length === 0
};