10799 : 쇠막대기

풀이

괄호가 나오는 문제는 대부분 stack을 이용하면 풀린다!

룰루랄라

코드

#include <bits/stdc++.h>
using namespace std;

int cnt, ans;
string str;

int cmp(char a, char b) {
	a -= '(', b -= '(';
	if (a == 0 && b == 0) return 1;
	if (a == 0 && b == 1) return 2;
	if (a == 1 && b == 0) return 3;
	if (a == 1 && b == 1) return 4;
}

int main() {
	cin >> str;
	for (int i = 0; i < str.size() - 1; i++) {
		char a = str[i], b = str[i + 1];
		int c = cmp(a, b);
		if (c == 1) cnt++;
		if (c == 2) ans += cnt;
		if (c == 3) continue;
		if (c == 4) ans++, cnt--;
	}
	cout << ans;
	return 0;
}

아무말

백준, 백준 온라인 저지, BOJ, Baekjoon Online Judge, C, C++, 씨, 씨쁠쁠, JAVA, algorithm, 자바, 알고리즘, 자료구조, 문제, 문제 풀이, 풀이

wookje.kwon's profile image

wookje.kwon

2017-03-08 14:06

Read more posts by this author