PS_Baekjoon
[백준 C++] 11899번 : 괄호 끼워넣기
SMILELY
2023. 3. 26. 10:31
https://www.acmicpc.net/problem/11899
11899번: 괄호 끼워넣기
첫 번째 줄에 S를 올바른 괄호열으로 만들기 위해 앞과 뒤에 붙여야 할 괄호의 최소 개수를 출력합니다. 불가능한 경우는 주어지지 않습니다.
www.acmicpc.net
풀이 :
- 백준 9012번과 비슷한 문제라서 이 문제를 푼다면 9012도 바로 해결할 수 있다
- 올바르지 못한 괄호의 갯수를 구하면 되는데,
( 이 나오는 경우 : 카운트한다
) 이 나오는 경우 : 카운트 된 열린 괄호가 없다면 닫힌 괄호를 카운트해주고, 있다면 차감한다
- 올바르지 못한 괄호 중 (의 갯수와 )의 갯수가 구해지는데, 그것의 합을 출력한다
코드 :
#include <iostream>
#include <algorithm>
#include <string>
using namespace std;
int main(){
cin.tie(NULL);
ios::sync_with_stdio(false);
int open, close;
string s;
cin >> s;
open = close = 0;
for(int i=0; i<s.size(); i++){
if(s[i] == '('){ //열린 괄호가 나오면 카운트
open++;
}else{
if(open > 0){ //닫힌 괄호가 들어왔고, 카운트된 열린 괄호가 있다면
open--;//합이 맞는 것이기 때문에 차감
}else{ //카운트 된 열린 괄호가 없다면
close++; //닫힌 괄호 차감
}
}
}
cout << open + close << '\n';
}