๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

Algorithm

[Algorithm/Java][LeetCode] 20. Valid Parentheses

๋ฐ˜์‘ํ˜•

[LeetCode] 20. Valid Parentheses

https://leetcode.com/problems/valid-parentheses/

๋ฌธ์ œ์ ‘๊ทผ

๊ด„ํ˜ธ๊ฐ€ ์˜ฌ๋ฐ”๋ฅธ ๊ด„ํ˜ธ์ธ์ง€ ์ž˜ ๋‹ซํžˆ๊ณ  ์—ด๋ ธ๋Š”์ง€๋ฅผ ํ™•์ธํ•˜๋Š” ๋ฌธ์ œ์ด๋‹ค. ๋น„์Šทํ•œ(๋˜‘๊ฐ™์€) ๋ฌธ์ œ๋ฅผ ๋ฐฑ์ค€์—์„œ ํ’€์–ด๋ด์„œ Stack์„ ์ด์šฉํ•˜๋ฉด ๋œ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ๊ณ  ์žˆ์—ˆ๋‹ค.
์—ฌ๋Š” ๊ด„ํ˜ธ์ผ ๋•Œ๋Š” Stack์— push๋ฅผ ํ•ด์ฃผ๊ณ  ๋‹ซํžŒ ๊ด„ํ˜ธ์ผ ๋•Œ๋Š” Stack์— top์ด ๊ฐ™์€ ์ข…๋ฅ˜์˜ ๊ด„ํ˜ธ์ธ์ง€ ํ™•์ธํ•˜๊ณ  popํ•˜๊ฑฐ๋‚˜ ์•„๋‹ˆ๋ผ๋ฉด false๋ฅผ ๋ฆฌํ„ดํ•ด์ค€๋‹ค.
์ด๋•Œ ์˜ˆ์™ธ์ฒ˜๋ฆฌํ•  ์ƒํ™ฉ์€ 2๊ฐ€์ง€์ด๋‹ค.

  1. ์—ด๋ฆฐ ๊ด„ํ˜ธ๋กœ๋งŒ ์ด๋ฃจ์–ด์ ธ์žˆ์„๋•Œ.
  2. ๋‹ซํžŒ ๊ด„ํ˜ธ๋กœ๋งŒ ์ด๋ฃจ์–ด์ ธ์žˆ์„๋•Œ.
    1๋ฒˆ์ฒ˜๋Ÿผ ์—ด๋ฆฐ ๊ด„ํ˜ธ๋กœ๋งŒ ์ด๋ฃจ์–ด์ ธ์žˆ๋‹ค๋ฉด for๋ฌธ์„ ๋น ์ ธ๋‚˜์™”์„ ๋•Œ Stack์ด ๋น„์–ด์žˆ์ง€ ์•Š์„ ๊ฒƒ์ด๊ณ , 2๋ฒˆ์ฒ˜๋Ÿผ ๋‹ซํžŒ ๊ด„ํ˜ธ๋กœ๋งŒ ์ด๋ฃจ์–ด์ ธ ์žˆ๋‹ค๋ฉด switch๋ฌธ ์•ˆ์—์„œ ์Šคํƒ์ด ๋น„์–ด์žˆ์„ ๊ฒƒ์ด๋‹ค.

Code

import java.util.Stack;

class Solution {
    public boolean isValid(String s) {
        Stack<Character> st = new Stack<>();
        for(int i=0; i<s.length(); i++){
            char cur = s.charAt(i);
            char top;
            switch(cur){
                case '(':
                case '{':
                case '[':
                    st.push(cur);
                    break;
                case ')':
                    if(st.isEmpty())
                        return false;
                    top = st.pop();
                    if(top !='('){
                        return false;
                    }
                    break;
                case '}':
                    if(st.isEmpty())
                        return false;
                    top = st.pop();
                    if(top !='{'){
                        return false;
                    }
                    break;
                case ']':
                    if(st.isEmpty())
                        return false;
                    top = st.pop();
                    if(top !='['){
                        return false;
                    }
                    break;
            }
        }
        return st.isEmpty();
    }
}

์–ด๋ ค์› ๋˜ ์ / ๋ฐฐ์šด ์ 

์˜›๋‚ ์— ํ•œ๋ฒˆ ํ’€์–ด๋ดค๋˜ ๋ฌธ์ œ๋ผ์„œ ์–ด๋ ค์›€์—†์ด ์ ‘๊ทผํ•˜๊ณ  ํ’€์—ˆ๋˜ ๊ฒƒ ๊ฐ™๋‹ค.

๋ฐ˜์‘ํ˜•