전형적인 스택 문제입니다. 이런 유형의 문제들은 자료구조책의 스택단원을 공부하면서 한번쯤은 구현해봤을 문제입니다.
코드가 길어질까봐 stl로 작성했는데 스택을 처음 공부하시는분들은 복습겸 꼭 c언어 스타일로 구현해볼것을 권장합니다.
코드
#include<iostream> #include<stack> #include<string> using namespace std; int main() { for (int t = 1; t <= 10; t++) { int len; cin >> len; stack<char>s; bool check = true; for (int i = 0; i < len; i++) { char c; cin >> c; switch (c) { case '[': case '{': case '<': case '(': s.push(c); break; case ']': case '}': case ')': case '>': if (s.empty()) { check = false; break; } char pop = s.top(); s.pop(); if ((pop == '(' && c != ')') || (pop == '[' && c != ']') || (pop == '{' && c != '}') || (pop == '<' && c != '>')) { check = false; break; } } } cout << "#" << t << " "; if ((!s.empty() || check == false)) cout << 0; else cout << 1; cout << endl; } }
'SW Expert Academy' 카테고리의 다른 글
1219. [S/W 문제해결 기본] 4일차 - 길찾기 (0) | 2019.12.04 |
---|---|
1217. [S/W 문제해결 기본] 4일차 - 거듭 제곱 (0) | 2019.12.04 |
1222. [S/W 문제해결 기본] 6일차 - 계산기1 (0) | 2019.12.04 |