ValidParentheses

public static boolean isValid(String s) {

        Stack<Character> stack = new Stack<>();
        char[] arr = s.toCharArray();

        for(int i = 0; i < arr.length; i++){
            if(')' == arr[i] || '}' == arr[i] || ']' == arr[i]) {
                if(!stack.isEmpty()) {
                    char a = stack.pop();
                    int num = arr[i] - a;
                    if (num != 1 && num != 2) {
                        stack.push(arr[i]);
                    }
                } else {
                    stack.push(arr[i]);
                }
            }else {
                stack.push(arr[i]);
            }
        }

        return stack.isEmpty();
    }
Stack<Character> stack = new Stack<>();
char[] arr = s.toCharArray();

// Stack -> ๊ด„ํ˜ธ ๊ฒ€์ฆ์šฉ
// char[] -> s๋ฅผ ์ชผ๊ฐ  ๋ฐฐ์—ด

๋‹ซ๋Š” ๊ด„ํ˜ธ์ผ ๋•Œ ๋กœ์ง ์ˆ˜ํ–‰

if(')' == arr[i] || '}' == arr[i] || ']' == arr[i]) {
    if(!stack.isEmpty()) { // stack ์ด ๋น„์–ด์žˆ์ง€ ์•Š์„ ๋•Œ
        char a = stack.pop();
        int num = arr[i] - a; // 1 ๋˜๋Š” 2 ์ฐจ์ด๊ฐ€ ๋‚จ.(์•„์Šคํ‚ค ์ฝ”๋“œ...)
        if (num != 1 && num != 2) {
          stack.push(arr[i]); // 1๋˜๋Š” 2์ฐจ์ด๊ฐ€ ์•„๋‹ ๋•Œ -> ์„œ๋กœ ๋‹ค๋ฅธ ๊ด„ํ˜ธ์ผ ๋•Œ ๋‹ค์‹œ ๋„ฃ์Œ
        }
    } else { // ์Šคํƒ์ด ๋น„์–ด์žˆ์œผ๋ฉด ์Šคํƒ์— ์ฒ˜์Œ๊ฑธ ๋„ฃ์Œ.
        stack.push(arr[i]);
    }
}else { // ์—ด๋ฆฐ ๊ด„ํ˜ธ ์ผ ๋•Œ ์Šคํƒ์— ์ถ”๊ฐ€
    stack.push(arr[i]);
}

for ๋ฌธ์ด ๋‹ค ๋ˆ ํ›„ stack ์— ๋‚จ์•„์žˆ๋Š” ๊ฐ’์ด ์žˆ์œผ๋ฉด false, ๋ฐฐ์—ด์ด ๋น„์–ด ์žˆ์œผ๋ฉด true ๋ฅผ ๋ฐ˜ํ™˜

Last updated

Was this helpful?