티스토리 뷰

백준

백준 소스코드 [C++] 2504 괄호의 값

Hani_Levenshtein 2020. 8. 17. 07:43

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

 

2504번: 괄호의 값

4개의 기호 ‘(’, ‘)’, ‘[’, ‘]’를 이용해서 만들어지는 괄호열 중에서 올바른 괄호열이란 다음과 같이 정의된다. 한 쌍의 괄호로만 이루어진 ‘()’와 ‘[]’는 올바른 괄호열이다.  만일

www.acmicpc.net

#include <iostream>
#include <stack>
#include <string>

using namespace std;
int main() {
	ios_base::sync_with_stdio(false);
	cin.tie(NULL);
	string xx;
	stack<char> s;
	cin >> xx;
	int n=1,i,result=0;
	for (i = 0;i < (int)xx.length();i++) {
		if (xx[i] == '(') {
			s.push(xx[i]);
			n = n * 2;
		}
		else if (xx[i] == '[') {
			s.push(xx[i]);
			n = n * 3;
		}
		else if (xx[i] == ')') {
			if (s.empty() == true || s.top() == '[') {
				result = 0;
				break;
			}
			else if (xx[i - 1] == '(')
				result = result + n;

			s.pop();
			n = n / 2;
		}
		else if (xx[i] == ']') {
			if (s.empty()==true || s.top() == '(') {
			result = 0;
			break;
			}
			else if (xx[i - 1] == '[')
				result = result + n;
			
			s.pop();
			n = n / 3;
		}
	}
	if (s.empty()!=true) result = 0;
	cout << result;

	return 0;
}
댓글