매일 조금씩

백준 9012번: 괄호 본문

알고리즘

백준 9012번: 괄호

mezo 2020. 4. 5. 18:15
728x90
반응형

 

 

 

스택을 활용한 문제다. 

 

라인 코테를 보기전에 스택을 공부했다면... 이문제를 풀었다면.... 얼마나 좋았을까...

 

 

 

 

 

 

 

 

YES가 나와야 하는데 NO만 나오는 오류가 발생했다.

 

문제는 stack <string> s; 를 for문 밖에 선언해서 그런거였다.

 

한줄 한줄 새로운 괄호의 testcase를 받을때마다 새로운 stack을 사용해야하므로 

 

for문 안에 선언 해주어야한다.

 

 

 

#include <iostream>
#include <string>
#include <stack>
using namespace std;

int n;


int main(void) {
	ios_base::sync_with_stdio(0);
	cin.tie(0);	//cin 실행속도 향상

	cin >> n;

	for (int i = 0; i < n; i++) {
		stack<string> s;
		string str;
		cin >> str;
		for (int j = 0; j < str.length(); j++) {
			if (str[j] == '(')
				s.push("(");
			else if (str[j] == ')') {
				if (!s.empty()) {
					if (s.top() == "(") {
						s.pop();
						continue;
					}
				}
				else
					s.push(")");
			}
		}

		if (s.empty())
			cout << "YES" << endl;
		else
			cout << "NO" << endl;
	}


	
	return 0;
}

 

 

728x90
반응형

'알고리즘' 카테고리의 다른 글

백준 1874번: 스택 수열  (0) 2020.04.05
백준 4949번: 균형잡힌 세상  (0) 2020.04.05
백준 10773번: 제로  (0) 2020.04.05
백준 10828번: 스택  (0) 2020.04.05
백준 4195번: 친구 네트워크  (0) 2020.04.04