ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 백준 10799 - 쇠막대기
    백준 algorithm 2020. 3. 3. 00:24
    반응형

    문제 설명 

     

     

     

    stack을 사용하여 풀 수 있다. 

    -> ' ( '를 만나면 stack에 해당 index를 push한다. 

    -> ' ) '를 만나면 stack의 top과 ' ) '를 가리키는 인덱스의 크기가 1이면 레이저이므로 stack의 사이즈를 answer에 더한다. 

    -> 위의 값이 1이 아닌 경우 answer에 1을 더한다. 

     

     

     

    
    #include <iostream>
    #include <stack>
    #include <string>
    
    using namespace std;
    
    int main()
    {
        ios_base::sync_with_stdio(false);
        cin.tie(nullptr);
        cout.tie(nullptr);
        
        string str;
        cin>>str;
        
        stack<int> st;
        int answer=0;
        
        int size=str.length()-1;
        int index=0;
        while(index<=size)
        {
            if(str[index]=='(')st.push(index++);// '(' case
            else// ')' case
            {
                if( ( index-st.top() )==1)//laser
                {
                    st.pop();
                    answer+=st.size();
                    index++;
                }
                else//fe Bar
                {
                    st.pop();
                    answer+=1;
                    index++;
                }
            }
        }
        cout << answer<<'\n';
        return 0;
    }
    
    
    반응형

    '백준 algorithm' 카테고리의 다른 글

    백준 5543- 상근날드  (0) 2020.03.05
    백준 18298 - 오큰수  (0) 2020.03.05
    백준 - 17413 단어 뒤집기 2  (0) 2020.03.02
    백준 1158 - 요세푸스 문제  (0) 2020.02.26
    백준 1406 - 에디터  (0) 2020.02.25

    댓글

Designed by Who.