[알고리즘]_[LeetCode]- 20. Valid Parentheses

SAPCO·2022년 7월 13일
0

- [Algorithm]

목록 보기
5/13

📍 1. 문제

LeetCode - Valid Parentheses

📍 2. 풀이

📌 2-1. 풀이

(1) 방법

스택을 이용.
( [ { 이면 stack에 push.
) ] } 이면 stack에서 pop.

(2) 코드

class Solution {
    public boolean isValid(String s) {
        Stack<Character> stack = new Stack<>();
        
        for(int i = 0; i < s.length(); i++) {
            if(s.charAt(i) == '(' || s.charAt(i) == '[' || s.charAt(i) == '{') {
                stack.push(s.charAt(i));
            }else if(stack.empty()) {
               return false;
            }else if(s.charAt(i) == ')' && stack.pop() != '('
                        || s.charAt(i) == ']' && stack.pop() != '['
                        || s.charAt(i) == '}' && stack.pop() != '{') {
                return false;
            }
        }
        return stack.empty();
    }
}

(3) 결과

📌 2-2. 풀이

(1) 방법

disscuss에 있는 풀이.. 세상에..
열고 닫히는 순서가 보장되어야 하기 때문에..
입력이 ([{ }])라면 좌우가 동일해야하기 때문에
여는( [ { 괄호이면 stack에 해당하는 닫는 괄호를 삽입.
} ] )은 뒤 나머지 괄호와 같아야한다.

(2) 코드

public boolean isValid(String s) {
	Stack<Character> stack = new Stack<Character>();
	for (char c : s.toCharArray()) {
		if (c == '(')
			stack.push(')');
		else if (c == '{')
			stack.push('}');
		else if (c == '[')
			stack.push(']');
		else if (stack.isEmpty() || stack.pop() != c)
			return false;
	}
	return stack.isEmpty();
}

(3) 결과

📍 3. 결론

간략하고도 어려운 해결법 존재... 세상에..

profile
SAP CO

0개의 댓글