알고리즘 문제풀이/프로그래머스

[프로그래머스] 쇠막대기

홍시홍 2020. 4. 3. 01:16

분류 : stack

 

요구사항

레이저로 쇠막대기를 절단할 경우, 절단된 쇠막대기 갯수 구하기

 

풀이

앞에서 부터 차곡차곡 스택에 넣어준다

쇠막대기인 경우 제외해준다

팝되는 경우 처리해준다

 

#include <string>
#include <vector>
#include <iostream>
using namespace std;

int solution(string arrangement) {
    int answer = 0;
    string str = arrangement;
    vector<char> v;
    for (int i = 0; i < str.size(); i++) {
        char now = str[i];
       // cout << i << endl;
        if(str[i] == '(') {
            if(str[i + 1] == ')') {
                answer += v.size();
                i = i + 1;
            }
            else {
                v.push_back(now);

            }
        }
        else if(now==')'){
            answer += 1;
            v.pop_back();
        }
        //cout << now << " " << answer << endl;
        
    }
    return answer;
}