반응형
1541번: 잃어버린 괄호
첫째 줄에 식이 주어진다. 식은 ‘0’~‘9’, ‘+’, 그리고 ‘-’만으로 이루어져 있고, 가장 처음과 마지막 문자는 숫자이다. 그리고 연속해서 두 개 이상의 연산자가 나타나지 않고, 5자리보다
www.acmicpc.net
#include <iostream>
#include <string>
#include <stack>
#include <math.h>
#include <vector>
using namespace std;
int main()
{
stack <char>line;
string stemp;
cin >> stemp;
for (int i = 0; i < stemp.size(); i++)
{
line.push(stemp[i]);//스택에 문자형으로 입력
}
int cnt = 0;
int sum = 0;
vector <int> undernum;
for (int i = 0; i < stemp.size(); i++)//stack은 팝되어 기존의 stemp사이즈로
{
if (line.top() != '+' && line.top() != '-')
{
sum = sum + (pow(10, cnt) * (line.top()-'0'));
cnt++;
line.pop();
}
else if (line.top() == '+')
{
cnt = 0;
line.pop();
}
else
{
undernum.push_back((sum) * (-1));
line.pop();
sum = 0; cnt = 0;
}
}
//sum안에는 맨 처음 숫자가 남아있는 상태!
int result = 0;
for (int i = 0; i < undernum.size(); i++)
{
result += undernum[i];
}
cout << result + sum;
}
반응형
'백준(알고리즘)' 카테고리의 다른 글
백준 11057 오르막 수 (0) | 2020.12.19 |
---|---|
백준 1309 동물원 (0) | 2020.12.19 |
백준 1932 정수삼각형 (0) | 2020.11.14 |
백준 1010 (0) | 2020.09.26 |
백준 2839 설탕배달 (0) | 2020.09.16 |