[백준10799] 쇠막대기 레이저로 절단하기 (C++)

1251 단어 ps백준ps

BOJ 바로가기

#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
#include <stack>
#include <string>
using namespace std;
int main() {
	int sum = 0;
	string str;
	stack<char> s;
	cin >> str;
	int flag;
	for (char c : str) {
		if (c == '(') {
			s.push('(');
			flag = 1;
		}
		else {
			s.pop();
			if (flag == 1) { // 레이저
				if (s.size()) {
					sum += s.size();
				}
			}
			else
				sum += 1;
			flag = 0;
		}
	}
	cout << sum;
	return 0;
}

flag 변수를 이용해 레이저인지 괄호의 끝인지를 구분했다. 레이저로 절단할 때마다 sum에 스택 사이즈만큼을 더해주고, 괄호의 끝을 만나면 1을 더해주었다.

좋은 웹페이지 즐겨찾기