자료구조 및 알고리즘/백준

[백준 9012번] 괄호

아기사우르스 2023. 2. 18. 16:50
728x90

백준 4949번과 비슷한데 4949번보다는 좀 간단해

#include <iostream>
#include <string>
#include <stack>

using namespace std;

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

	int T;
	cin >> T;
	cin.ignore();
	for (int i = 0; i < T; i++) {

		string input;
		getline(cin, input);
		// 입력 받고
		stack<char> s;
		bool flag = 0; // 전역 변수를 이용
		// 문자형 배열에 문자열의 문자 하나하나 넣어주기
		for (int i = 0; i < input.length(); i++) {
			char c = input[i];

			// (는 push )는 push 말고 상대방을 pop
			if ((c == '('))
				s.push(c);
			else if (c == ')') {
				if (!s.empty() && s.top() == '(')
					s.pop();

				// )를 했는데 비었다. )가 많아서 짝이 안 맞다. 틀렸으니 flag 1
				else {
					flag = 1;
					break;
				} // 짝이 안 맞으니 break 해준다.
			}

		}

		/*최종적으로 flag가 0인데 빈 상황 - 짝 맞아
		flag가 0인데 비지 앟은 상황은(짝 안 맞아 */

		// case 분류 중요하다.

		if (flag == 0 && s.empty()) {// flag가 0인데 빈 상황-짝 맞아
			cout << "YES" << '\n';
		}
		else
			cout << "NO" << '\n';


	}
}

 

case를 분류해보자 - 복습할 때 해보기!

4949번과 공통점 뭐 있는지  비교해보자...

728x90