정보/백준 문제풀이

백준 10799번 쇠막대기 C++

FeatherCoder 2023. 12. 16. 23:44
문제 링크 : https://www.acmicpc.net/problem/10799
 

10799번: 쇠막대기

여러 개의 쇠막대기를 레이저로 절단하려고 한다. 효율적인 작업을 위해서 쇠막대기를 아래에서 위로 겹쳐 놓고, 레이저를 위에서 수직으로 발사하여 쇠막대기들을 자른다. 쇠막대기와 레이저

www.acmicpc.net

이 문제는 기말고사 마지막 시험에서 시간이 남았을 때 심심해서 푼 문제인 만큼, 어렵지 않다.

 

문제 풀이

 문제에서는 레이저로 절단된 쇠막대기의 조각 개수를 묻는 문제이다.

 

 단순하게 기존 쇠막대기 개수에 각 레이저들이 자른 쇠막대기의 개수들을 다 더해주기만 하면 된다. 그 방법으로 "()" 앞에 있는 "("개수에서  ")"개수를 빼주는 식으로 셌다. 또 기존 쇠막대기 개수는 "()"에 포함되는 ")"를 제외한 ")"의 개수를 세주었다.

 

코드

#include <cstring>
#include <iostream>
using namespace std;

int main()
{
    int R=0,N,d=0,n=0,i;
    string str;
    
    cin>>str;
    N = str.length();
    
    for(i=0;i<N;i++)
    {
        if(str[i]=='(')
        {
            R++;
        }
        else
        {
            if(str[i-1]=='(')
            {
                R --;
                d += R;
            }
            else
            {
                R--;
                n++;
            }
        }
    }
    cout<<n+d;
}