본문 바로가기

개발/알고리즘

백준 실버 2 ) 10799 쇠막대기 stack

 

풀이:  레이저 갯수를 해당 스택의 사이즈만큼에 ++해준다 

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

using namespace std;

int main() {
	string str;
	
	cin >> str;
	
	stack<char> st;

	int val = 0;	
	
	int pArr[100000] = {0,};
	str+="_";
		
	for(int i = 0; i < str.length(); i++) {

		if(str[i] == '(' && str[i+1] == ')') {
			pArr[st.size()]++;
			i++;
		}
		else if(str[i] == '(') {
			st.push(str[i]);
		}
		else if(str[i] == ')') {
			val += pArr[st.size()]+1;
			pArr[st.size()-1] += pArr[st.size()];
			pArr[st.size()] = 0;
			
			st.pop();
		}
	}
	
	cout << val;
}