문제 풀이/백준

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();
}