본문 바로가기
PS 문제 풀이/SWEA

[SWEA] 3376 파도반 수열

by 까망 하르방 2021. 3. 1.
반응형

출처: 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

댓글