반응형

문제 설명 & 접근 방식
이 문제는 백준 4949번이랑 매우 유사한 문제이다
어떻게 보면 중괄호" [ ] " 가 없어서 더 쉬운 문제라고 생각한다
접근 방식도 똑같이
1. 열린 괄호 나오면 스택에 추가
2. 스택이 비어있다면 짝이 없다는 것이므로 탈락
3. 비어있지 않다면 짝이 무조건 맞으므로 pop
4. 2~3과정 끝났는데 스택에 괄호 남아있으면 탈락 없으면 통과
코드
#include <iostream>
#include <stack>
#include <string>
#include <algorithm>
using namespace std;
int main() {
int n;
string s;
bool isValid = true;
cin >> n;
for(int tmp=0; tmp<n; tmp++)
{
cin >> s;
stack<int> st;
isValid = true;
for(char c : s)
{
if(c == '(')
{
st.push(c);
}
else
{
if(st.size() == 0)
{
isValid = false;
break;
}
else
{
st.pop();
}
}
}
if(st.size() != 0) isValid = false; // "((" 예외처리
if(isValid) cout << "YES" << "\n";
else cout << "NO" << "\n";
}
return 0;
}
오류
처음에 "YES"로 출력해야되는데 "Yes"로 해서 계속 오류가 났고
알아차리는데 꽤 걸려서 스스로도 어이가 없었다
균형잡힌 세상 문제에서는 탈락인걸 따로 벡터에 담고 처리했었는데
이는 비효율적인 것 같아서 이번엔 bool 자료형을 써서 탈락이면 false로 지정해줬다
반응형
'algorithm > 스택' 카테고리의 다른 글
| [algorithm] 백준 3986번 좋은 단어 (0) | 2026.01.25 |
|---|---|
| [algorithm] 백준 4949번 균형잡힌 세상 (0) | 2026.01.25 |
| [algorithm] 백준 10773번 제로 (0) | 2026.01.12 |
| [algorithm] 백준 10828번 스택 (0) | 2026.01.12 |
