문제 풀이/백준
BOJ 1079번: 쇠막대기
danbibibi
2023. 12. 15. 14:23
문제
문제 바로가기> BOJ 1079번: 쇠막대기
10799번: 쇠막대기
여러 개의 쇠막대기를 레이저로 절단하려고 한다. 효율적인 작업을 위해서 쇠막대기를 아래에서 위로 겹쳐 놓고, 레이저를 위에서 수직으로 발사하여 쇠막대기들을 자른다. 쇠막대기와 레이저
www.acmicpc.net
풀이
닫는 괄호 ')' 일 경우 두 가지 경우가 있다.
1. 쇠막대기의 끝인 경우: 자신(조각)을 정답에 더해준다 (+1)
2. 레이저의 끝인 경우 = 이전 문자가 '(': 이때까지 쌓인 쇠막대기 개수만큼 정답에 더해준다 (+siz)
#include<iostream>
using namespace std;
string str;
void input(){
cin >> str;
}
void solution(){
int ans=0, siz=0;
for(int i=0; i<str.size(); i++){
if(str[i] == '(') siz++;
else { // str[i] == ')'
siz--;
if(str[i-1] =='(') ans+=siz;
else ans++;
}
}
cout << ans;
}
int main(){
ios_base::sync_with_stdio(0); cin.tie(0);
input();
solution();
}