반응형
https://leetcode.com/problems/valid-parentheses/
자료구조를 이용한 문제였습니다.
📕 풀이방법
📔 풀이과정
stack st를 선언해줍니다. 여러 경우를 생각해줍니다.
1. 여는 괄호 '(', '{', '[' 가 나오면 st에 push 해줍니다.
2. 닫는 괄호 ')', '}', ']'가 나온다면 두 경우가 있습니다.
2-1. stack에 원소가 없다면 짝이 맞는지 확인해 짝이 맞으면 여는 괄호가 있는 st.top()을 pop()해줍니다.
2-2. stack에 원소가 있다면 여는 괄호가 나온적이 없다는 뜻이므로 유효하지 않습니다.
📔 정답출력
stack에 원소가 남아있다면 false 없다면 true를 반환해줍니다.
📕 Code
📔 C++
class Solution {
public:
bool isValid(string s) {
stack <char> st;
for(auto c : s) {
if(st.size()) {
if(st.top() == '(' && c == ')') {
st.pop();
continue;
}
if(st.top() == '{' && c == '}') {
st.pop();
continue;
}
if(st.top() == '[' && c == ']') {
st.pop();
continue;
}
}
st.push(c);
}
return st.size() == 0;
}
};
*더 나은 내용을 위한 지적, 조언은 언제나 환영합니다.
'Algorithm > 자료구조' 카테고리의 다른 글
(C++) - LeetCode (easy) 83. Remove Duplicates from Sorted List (0) | 2022.11.12 |
---|---|
(C++) - LeetCode (easy) 21. Merge Two Sorted Lists (0) | 2022.10.25 |
(C++) - 백준(BOJ) 5157 : Bailout Bonus (0) | 2022.07.15 |
(C++) - 백준(BOJ) 15720 : 카우버거 (0) | 2022.06.01 |
(C++) - 백준(BOJ) 4158 : CD (0) | 2022.05.25 |