728x90

🏆 목차.

  1. 문제
  2. 코드
  3. 풀이

 

🛒 문제

 

백준-10799번-쇠막대기
백준 10799번 쇠막대기

 

🎨 코드

 

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

int main()
{
    int value = 0;
    string str;
    stack<int> stk;
    cin >> str;
    for (int i = 0; i < str.size(); i++)
    {
        if (str[i] == '(')
        {
            stk.push(i);
        }
        else
        {
            if (stk.top() + 1 == i)
            {
                stk.pop();
                value += stk.size();
            }
            else
            {
                stk.pop();
                value += 1;
            }
        }
    }
    cout << value;
}

 

🎯 풀이

 

문제가 조금 이해하기 어려워 시간이 걸렸던 문제입니다. 

() -> 레이저

(()) -> 쇠 막대기 

 

이런 식으로 괄호가 붙어있으면 레이저, 떨어져 있다면 쇠 막대기로 판단합니다.

레이저는 스택의 Size만큼 값을 증가시키고, 
쇠 막대기는 1만큼 값을 증가시켜줍니다.

 

복잡한 코드없이 이게 끝인 문제이지만 이해하는데 시간이 오래 걸렸던 것 같습니다.

 

728x90

+ Recent posts