Leetcode 20. Valid Parentheses
stack을 사용할 줄만 안다면, 쉽게 구현할 수 있는 문제. 백준의 stack의 첫 문제였던 것으로 기억한다.
// Runtime 0 ms Beats 100%
// Memory 6.2 MB Beats 81.54%
class Solution {
public:
bool isValid(string s) {
stack<char> stk;
for(char c : s){
if(c == '(' || c == '[' || c == '{') stk.push(c);
else{
if(stk.empty()) return false;
if(c == ')'){
if(stk.top() == '(') stk.pop();
else return false;
}
else if(c == ']'){
if(stk.top() == '[') stk.pop();
else return false;
}
else if(c == '}'){
if(stk.top() == '{') stk.pop();
else return false;
}
}
}
return stk.empty();
}
};
시간복잡도
string의 모든 char를 순회하므로 O(n). stack의 push나 pop도 O(1)이다.
공간복잡도
stack만 사용하는데, worst case stack은 string과 같은 size가 되므로 O(n)이다.
'PS > PS Log' 카테고리의 다른 글
23.04.12. 풀었던 문제들 (0) | 2023.04.12 |
---|---|
23.04.11. 풀었던 문제들 (0) | 2023.04.11 |
23.04.09. 풀었던 문제들 (0) | 2023.04.09 |
23.04.08. 풀었던 문제들 (0) | 2023.04.08 |
23.04.07. 풀었던 문제들 (0) | 2023.04.07 |