‡ CODING TEST STUDY ‡/º 백준

[백준 10799번 C++] 쇠막대기

Trudy | 송연 2023. 9. 10. 00:58

 

10799번: 쇠막대기 (acmicpc.net)

 

10799번: 쇠막대기

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

www.acmicpc.net


() 사이에 있는 '('의 개수를 count해서 다음 ()로 인해 잘렸을 때 몇개의 조각이 생겨났는 지 세어야한다. 

()가 나오면 그때까지 열려있는 괄호 수를 sum에 더하는 식으로 해줬더니 성공!

#include <stack>
#include <iostream>
#include <vector>

using namespace std;

int main() {
    vector<char> v;
    string s;
    int cnt=0;
    int sum=0;
    
    cin >> s;
    
    for(int i=0; i<s.length(); i++){
        if(s[i] == '('){
            //레이저인 경우
            if(s[i+1] == ')'){
                i++;
                sum += cnt;
            }
            //쇠막대기의 시작인 경우
            else {
                cnt++;
            }
        }
        
        //쇠막대기의 끝인 경우
        else {
            cnt--;
            sum++;
        }
    }
    
    cout << sum;
    return 0;
}