Notice
Recent Posts
Recent Comments
Link
250x250
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
Tags
- stack
- priority_queue
- 이분탐색
- acm
- 알고스팟
- DFS
- BOJ
- Algospot
- 종만북
- 스택
- backtracking
- 완전탐색
- 재귀
- 백트래킹
- 백준
- 분리집합
- 너비우선탐색
- 알고리즘문제해결전략
- 동적계획법
- Greedy
- 유니온파인드
- BFS
- 다이나믹프로그래밍
- 문자열
- 그리디
- 세그먼트트리
- union-find
- 분할정복
- 누적합
- DP
Archives
- Today
- Total
DAMPER's 낙서장
1541 잃어버린 괄호 본문
728x90
1541번: 잃어버린 괄호
첫째 줄에 식이 주어진다. 식은 ‘0’~‘9’, ‘+’, 그리고 ‘-’만으로 이루어져 있고, 가장 처음과 마지막 문자는 숫자이다. 그리고 연속해서 두 개 이상의 연산자가 나타나지 않고, 5자리보다
www.acmicpc.net
<아이디어>
가장 처음과 마지막은 숫자이고, 두 개 이상의 연산자는 나타나지 않는다.
그럼 숫자가 N개라면 연산자는 N-1개이다.
숫자는 vector에, 연산자는 queue에 저장하고 숫자를 한칸씩 가면서 계산한다.
최솟값을 만들기 위해 '-'연산자 뒤에 나오는 '+'연산자에 해당하는 숫자들을 모두 더하여 한번에 뺀다.
경우의 수는 다음과 같다.
- queue에서 '-'가 나온 경우, 빼기 위해 저장되어있는 값을 결과값에서 뺀 다음 다시 저장한다.
- queue에서 '+'가 나온 경우, 저장된 값이 있다면 (이전에 '-' 가 나왔다면) 저장된 값에 더한다.
- queue에서 '+'가 나왔지만 저장된 값이 없다면 결과값에 더한다.
마지막에 빼기위해 저장된 값을 결과값에서 뺀다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
|
#include <bits/stdc++.h>
using namespace std;
#define swap(a,b) (a)^=(b)^=(a)^=(b)
#define endl '\n'
typedef long long lld;
int main()
{
ios_base::sync_with_stdio(NULL);
cin.tie(NULL);
cout.tie(NULL);
string s;
cin>>s;
vector<int> v;
queue<char> op;
v.push_back(0);
for(int i=0;i<s.length();i++)
{
if(s[i]=='-' || s[i]=='+')
{
op.push(s[i]);
v.push_back(0);
}
else if(s[i]>='0' && s[i]<='9')
{
*(v.end()-1) *= 10;
*(v.end()-1) += s[i]-'0';
}
}
lld ans = (lld)v[0], sub = 0;
for(int i=1;i<v.size();i++)
{
if(op.front()=='-')
{
ans -= sub;
sub = 0;
sub += v[i];
}
if(op.front()=='+')
{
if(sub) sub += v[i];
else ans += v[i];
}
op.pop();
}
if(sub) ans -= sub;
cout<<ans;
return 0;
}
|
cs |
728x90
'Problem Solving > BOJ 문제풀이' 카테고리의 다른 글
5525 IOIOI (0) | 2021.01.11 |
---|---|
1992 쿼드트리 (0) | 2021.01.11 |
7662 이중 우선순위 큐 (0) | 2021.01.08 |
11687 팩토리얼 0의 개수 (0) | 2021.01.04 |
14889 스타트와 링크 (0) | 2021.01.02 |