-
[1541] 잃어버린 괄호BOJ 2021. 9. 28. 17:29
https://www.acmicpc.net/problem/1541
1541번: 잃어버린 괄호
첫째 줄에 식이 주어진다. 식은 ‘0’~‘9’, ‘+’, 그리고 ‘-’만으로 이루어져 있고, 가장 처음과 마지막 문자는 숫자이다. 그리고 연속해서 두 개 이상의 연산자가 나타나지 않고, 5자리보다
www.acmicpc.net
<문제>
stoi()를 사용해서 파싱은 간단하게 구현할 수 있다.
'-'가 나온 뒤로부터는 항상 숫자를 빼주고, 그 전까지는 항상 숫자를 더해주면 된다.
가령 - 1 + 2 - 3 + 4 + 5 --> - (1+2) - (3+4+5) 처럼, -를 경계로 +들을 합치는 방식으로 괄호를 쳐주면 된다.
고로 연산자들의 배열과 관계없이, '-' 연산자가 처음으로 등장한 시점만이 어떤 수를 더하고 뺄지에 영향을 준다.
<소스코드>
123456789101112131415161718192021222324252627#include<bits/stdc++.h>using namespace std;int main(void) {string s;cin >> s;int n = s.length(), i, answer = 0;string temp;bool flag = false;for (i = 0; i < n; i++) {if ('0' <= s[i] && s[i] <= '9') {temp += s[i];continue;}if (flag == false) {answer += stoi(temp);}else {answer -= stoi(temp);}if (s[i] == '-')flag = true;temp = "";}if (flag == false)answer += stoi(temp);else answer -= stoi(temp);cout << answer;return 0;}cs 'BOJ' 카테고리의 다른 글
[1439] 뒤집기 (0) 2021.09.30 [1339] 단어 수학 (0) 2021.09.30 [1092] 배 (0) 2021.09.28 [14226] 이모티콘 (0) 2021.09.27 [1254] 팰린드롬 만들기 (0) 2021.09.27