* 해결 방법
마찬가지로 괄호는 stack에 관한 문제입니다. 단, 이 문제에서는 괄호 모양이 3개가 있습니다. 이 괄호모양이 유효한지 확인해야 합니다. 정상적인 괄호라면, ')' '}' ']'가 나올 때 stack.peek()이 해당 괄호와 맞는 모양이어야 한다는 것입니다. 따라서 그것을 체크해주면서 하나씩 풀이하면, O(N)에 확인이 가능합니다.
import java.util.*;
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.add(s.charAt(i));
} else{
if(stack.size()==0) return false;
if(s.charAt(i)==')'){
if(stack.peek()=='(') stack.pop();
else return false;
}
else if(s.charAt(i)==']'){
if(stack.peek()=='[') stack.pop();
else return false;
}
else if(s.charAt(i)=='}'){
if(stack.peek()=='{') stack.pop();
else return false;
}
}
}
if(stack.size()==0) return true;
else return false;
}
}
반응형
'Algorithm' 카테고리의 다른 글
10799 : 쇠막대기 ( 백준 / java ) (0) | 2020.11.07 |
---|---|
4963 : 섬의 개수 ( 백준 / java ) (0) | 2020.11.07 |
32 : Longest Valid Parentheses ( leetcode / java ) (0) | 2020.11.03 |
예산 : Summer/Winter Coding(~2018) ( 프로그래머스 / java ) (0) | 2020.11.03 |
14430 : 자원 캐기 ( 백준 / java ) (0) | 2020.11.02 |