예제 입력 1
55-50+40
예제 출력 1
-35
https://www.acmicpc.net/problem/1541
- (-) 부호가 등장하는 시점부터 괄호로 묶으면 뒤에 나오는 것들은 모두 마이너스로 계산하여 더하면 된다.
10+20-(30+55-50+40+30)-(40)
#include <stdio.h>
char input[51];
int main(void)
{
scanf("%s", input);
int idx = 0;
int current = 0;
long long ans = 0;
bool minus = false;
while (input[idx] != '\0')
{
if (input[idx] == '+' || input[idx] == '-')
{
if (minus) ans -= current;
else ans += current;
current = 0;
if (input[idx] == '-') minus = true;
}
else
{
current = ((current * 10) + (input[idx] - '0'));
}
idx++;
}
if (minus) ans -= current;
else ans += current;
printf("%lld\n", ans);
return 0;
}
'Algorithm > 문제풀이' 카테고리의 다른 글
[그리디 알고리즘] 30 (0) | 2019.11.12 |
---|---|
[그리디 알고리즘] 수 묶기 (0) | 2019.11.09 |
[그리디 알고리즘] 가장 긴 증가하는 부분 수열 2 (0) | 2019.11.07 |
[그리디 알고리즘] 순회강연 (0) | 2019.11.07 |
[그리디 알고리즘] 보석 도둑 (0) | 2019.11.07 |