1주차(자료구조) - [C++]백준9012 괄호

1주차(자료구조) - [C++]백준9012 괄호

백준9012 괄호 링크

문제

오류

예제 입력

오류


코드

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

int main() {
	ios_base::sync_with_stdio(0);
	cin.tie(0);

	int T;
	cin >> T;

	stack<char> Stack;
	stack<char> temp;
	string s;
	string* result = new string[T];
	for (int i = 0; i < T; i++) {
		cin >> s;
		for (int j = 0; j < s.length(); j++) {

			if (s[j] == '(') {
				Stack.push(s[j]);
			}
			else {
				if (Stack.empty()) {
					Stack.push('E');
					break;
				}
				Stack.pop();
			}
		}
		if (Stack.empty()) {
			result[i] = "YES";
		}
		else {
			Stack = temp;
			result[i] = "NO";
		}
	}

	for (int i = 0; i < T; i++) {
		cout << result[i] << "\n";
	}

	delete[]result;
	result = nullptr;
}

설명

C++ STL(표준 템플릿 라이브러리)에서 스택을 사용하여 한 줄마다 괄호가 짝이 맞는지 확인합니다. 여는 괄호를 스택에 PUSH해주고 중간중간에 닫는 괄호가 나오면 괄호가 완성되니 POP해줍니다. 그래서 결론적으로 괄호가 수에 맞게 잘 짝지어 있다면 성공(YES)를 출력하고 만약 닫는 괄호가 먼저 나오거나 수가 맞지 않는다면 실패(NO)를 출력합니다.

<stack>
-stack<자료형> 변수명; : 스택 자료구조 사용

결과

오류


© 2022. All rights reserved. 신동민의 블로그