반응형
출처: SWEA
Input
2
6
12
Output
#1 3
#2 16
#include <iostream>
#include <stack>
#include <string>
using namespace std;
int main() {
int testCase = 10;
int len;
string str;
bool isValid;
for (int tc = 1; tc <= testCase; tc++) {
cin >> len >> str;
stack<char> st;
isValid = true;
for (int i = 0; i < len; i++) {
// 열린 괄호인 경우 push
if(str[i] == '(' || str[i] == '[' || str[i] == '{' || str[i] == '<'){
st.push(str[i]);
continue;
}
// 닫힌 괄호인 경우 스택이 비워져 있는지 확인
if (st.empty()) {
isValid = false;
break;
}
// 괄호쌍 검토
if (str[i] == ')' && st.top() != '(' ) isValid = false;
else if (str[i] == ']' && st.top() != '[') isValid = false;
else if (str[i] == '}' && st.top() != '{') isValid = false;
else if (str[i] == '>' && st.top() != '<') isValid = false;
// 유효하지 않는 것이 판단된 경우
if (!isValid) break;
// 현재까지는 괄호쌍이 맞는 경우
st.pop();
}
// 모든 괄호를 처리했는데 stack에 남아 있는지 확인
if (st.size() > 0) isValid = false;
cout << "#" << tc << " ";
if (isValid) cout << "1\n";
else cout << "0\n";
}
}
반응형
'PS 문제 풀이 > SWEA' 카테고리의 다른 글
[SWEA] 1284 수도 요금 경쟁 (0) | 2021.03.01 |
---|---|
[SWEA] 1234 비밀번호 (0) | 2021.03.01 |
[SWEA] 3347 올림픽 종목 투표 (0) | 2021.03.01 |
[SWEA] 1213 String (0) | 2021.03.01 |
[SWEA] 9088 다이아몬드 (0) | 2021.03.01 |
댓글