문제 설명 :
한 마디로 괄호가 정상적으로 열고 닫혀있는지 확인하는 문제이다.
class Solution {
public boolean isValid(String s) {
Stack<Character> stack = new Stack();
boolean result = false;
if(s.length() == 1) return false;
for(int i=0; i<s.length(); i++){
switch(s.charAt(i)){
case '(','{','[':
stack.push(s.charAt(i));
result = false;
break;
case ')':
if(stack.empty()) return false;
if(stack.peek() == '('){
stack.pop();
result = true;
}else{
return false;
}
break;
case '}':
if(stack.empty()) return false;
if(stack.peek() == '{'){
stack.pop();
result = true;
}else{
return false;
}
break;
case ']':
if(stack.empty()) return false;
if(stack.peek() == '['){
stack.pop();
result = true;
}else{
return false;
}
break;
}
}
return result && stack.empty();
}
}
해설 :
- 전에 프로그래머스에서도 한 번 풀어봤던 문제인데, Stack으로 풀었던게 기억나서 동일하게 Stack으로 접근해보았다.
- 여는 괄호의 경우 Stack에 Push해주고, 닫는 괄호의 경우 peek으로 자신과 짝이 맞는 괄호가 Stack에 저장되어 있는지 확인한다.
- 이 과정에서 닫는괄호만 있거나, 마지막에 열린 괄호만 존재하는 케이스가 있어 empty()를 활용해 처리해주었다.
'Algorithm > LeetCode' 카테고리의 다른 글
[Java] 26. Remove Duplicates from Sorted Array (1) | 2023.06.07 |
---|---|
[Java] 21. Merge Two Sorted Lists (0) | 2023.06.07 |
[Java] 14. Longest Common Prefix (0) | 2023.06.07 |
[Java] 13. Roman to Integer (0) | 2023.06.07 |
[Java] 9. Palindrome Number (0) | 2023.06.07 |