https://www.acmicpc.net/problem/11899
11899번: 괄호 끼워넣기
첫 번째 줄에 S를 올바른 괄호열으로 만들기 위해 앞과 뒤에 붙여야 할 괄호의 최소 개수를 출력합니다. 불가능한 경우는 주어지지 않습니다.
www.acmicpc.net
'('가 나타나는 경우 스택에 넣어주고 ')'가 나타나는 경우 스택에서 빼주면 된다.
고려해야 할 것은 다음과 같다.
1. 충분한 '('가 없는데 ')'가 나오는 경우 -> 앞에 '('를 넣어줘야한다.
2. 마지막이 1개 이상의 '('으로 끝나는 경우 -> 뒤에 ')'를 넣어줘야한다.
이 문제의 경우 굳이 stack을 이용할 필요 없이, 정수 변수 cnt를 이용했다.
#include <iostream>
#define fio cin.tie(0)->sync_with_stdio(0)
using namespace std;
int main(){
fio;
int cnt = 0;
int stack = 0;
//
string S; cin >> S;
for(int i=0; i<S.size(); i++){
if(S[i] == '('){
stack++;
}else{// )
if(stack > 0){
stack--;
}else{
cnt++;
}
}
}
cnt += stack;
//
cout << cnt;
return 0;
}
'알고리즘 > 백준' 카테고리의 다른 글
백준 18100 Думский регламент (0) | 2021.12.24 |
---|---|
백준 15815 천재 수학자 성필 (0) | 2021.12.24 |
백준 3986 좋은 단어 (0) | 2021.12.23 |
백준 18511 큰 수 구성하기 (0) | 2021.12.22 |
백준 17478 재귀함수가 뭔가요? (0) | 2021.12.22 |