반응형
[LeetCode] 20. Valid Parentheses
https://leetcode.com/problems/valid-parentheses/
문제접근
괄호가 올바른 괄호인지 잘 닫히고 열렸는지를 확인하는 문제이다. 비슷한(똑같은) 문제를 백준에서 풀어봐서 Stack을 이용하면 된다는 것을 알고 있었다.
여는 괄호일 때는 Stack에 push를 해주고 닫힌 괄호일 때는 Stack에 top이 같은 종류의 괄호인지 확인하고 pop하거나 아니라면 false를 리턴해준다.
이때 예외처리할 상황은 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();
}
}
어려웠던 점/ 배운 점
옛날에 한번 풀어봤던 문제라서 어려움없이 접근하고 풀었던 것 같다.
반응형
'Algorithm' 카테고리의 다른 글
[Algorithm/Java][BOJ] 백준 2908번 상수 (0) | 2022.01.20 |
---|---|
[Algorithm/Java][프로그래머스] 문자열 내림차순으로 배치하기 (0) | 2022.01.17 |
[Algorithm/Java][LeetCode] 21. Merge Two Sorted Lists (0) | 2022.01.16 |
[Algorithm/Java][BOJ] 1439번 뒤집기 (0) | 2022.01.16 |
[Algorithm/Java][프로그래머스] 문자열 내 마음대로 정렬하기 (0) | 2022.01.11 |