본문 바로가기

Algorithm/BAEKJOON

[BOJ] 11899번 괄호 끼워넣기 (C++)

728x90
반응형

https://www.acmicpc.net/problem/11899

 

11899번: 괄호 끼워넣기

첫 번째 줄에 S를 올바른 괄호열으로 만들기 위해 앞과 뒤에 붙여야 할 괄호의 최소 개수를 출력합니다. 불가능한 경우는 주어지지 않습니다.

www.acmicpc.net

 

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

int main() {
	stack<char> s;
	stack<char> t;
	string str;
	cin >> str;
	
	for(int i = 0; i < str.length(); i++){
		char c = str[i];
		
		if(c == '('){
			s.push(str[i]);
		} else {
			if(!s.empty()) s.pop();
			else t.push(str[i]);
		}
	}
	
	cout << s.size() + t.size() << endl;
	
	return 0;
}

여는 괄호일 때

s에 push

닫는 괄호일 때

스택 내부에 여는 괄호가 있을 때 -> s pop

없다 -> t에 push

 

s와 t에 push된 괄호는 쌍이 되는 괄호를 붙여주어야 한다.

따라서 앞과 뒤에 붙여야 할 괄호의 최소 개수는 s와 t의 size 합이다.

728x90
반응형