반응형
/*레이저는 여는 괄호와 닫는 괄호의 인접한 쌍 ‘( ) ’ 으로 표현된다. 또한, 모든 ‘( ) ’는 반드시 레이저를 표현한다.
쇠막대기의 왼쪽 끝은 여는 괄호 ‘ ( ’ 로, 오른쪽 끝은 닫힌 괄호 ‘) ’ 로 표현된다. */
#include <iostream>
#include <stack>
#include <string>
using namespace std;
//1.'('가 나올 때마다 개수를 세어준다 - > 세어주는 조건은 2번에---
//2.'()', '(())'를 구분해주어야한다 인덱스 차이가 1이 나는지 확인하고 push여부를 결정
string k;
stack <int> o;
int cnt,ksize;
int main() {
cin >> k;
ksize = k.size();
for (int i = 0; i < ksize; i++)
{
if (k[i] == '(')
{
o.push(i);
}
else//')'가 나왔을 때
{
if (o.top()+1==i)//'()'가 나왔을 때 - > 레이저
{
o.pop();
cnt += o.size();
}
else//'(())'일 때 '('를 빼주고 1을 더해준다
{
o.pop();
cnt++;
}
}
}
cout << cnt;
}
'Algorithm' 카테고리의 다른 글
C++(씨쁠쁠)(cplusplus)-백준(baekjoon)(BaekJoon)코딩 9935번:문자열 폭발 답 (0) | 2017.02.26 |
---|---|
(C++) - 백준(BOJ) 2606번 : 바이러스 답 (0) | 2017.02.25 |
(C++) - 백준(BOJ) 2775번 : 부녀회장이 될테야 답 (0) | 2017.02.25 |
(C++) - 백준(BOJ) 6086번 : 최대 유량 답 (0) | 2017.02.24 |
(C++) - 백준(BOJ)코딩 10868 : 최소값 답 (0) | 2017.02.24 |