Recent Posts
Notice
No Rules Rules
잃어버린 괄호 (feat. 백준, 1541번) 본문
728x90
반응형
잃어버린 괄호
https://www.acmicpc.net/problem/1541
반응형
// woohyeon.kim
// kim519620.tistory.com
#include <iostream>
#include <string>
#include <vector>
using namespace std;
int main() {
ios::sync_with_stdio(false), cin.tie(NULL);
string str;
cin >> str;
vector<string> str_tmpl;
auto minus_sign = str.find('-');
while (minus_sign != string::npos) {
str_tmpl.push_back(str.substr(0, minus_sign));
str.erase(0, minus_sign + 1);
minus_sign = str.find('-');
}
str_tmpl.push_back(str);
vector<int> tmp;
for (auto& item : str_tmpl) {
auto value = 0;
auto plus_sign = item.find('+');
while (plus_sign != string::npos) {
value += stoi(item.substr(0, plus_sign));
item.erase(0, plus_sign + 1);
plus_sign = item.find('+');
}
value += stoi(item);
tmp.push_back(value);
}
register int ans = tmp[0];
for (register int i = 1; i < tmp.size(); ++i)
ans -= tmp[i];
cout << ans;
return 0;
}
// *&)*@*
- 괄호를 붙였을때 가장 작은 값을 출력하는 문제입니다.
- 가장 작은 값은 큰 값을 뺄수록 작아집니다.
- 따라서 + 연산을 먼저 수행하고 + 연산이 수행된 정수와 수행되지 않은 정수끼리의 - 연산이 이루어지면 가장 작은 정수값이 됩니다.
- 첫 번째 케이스인 '55-50+40' 을 예로 보겠습니다.
- 먼저 문자 '-'로 split 를 취합니다. 그럼 '55' 와 '50+40' 이 남게 됩니다.
- '55' 에서 문자 '+' 로 split을 취한 뒤 더해줍니다. 결과는 '55' 입니다.
- '50 + 40'에서 문자 '+'로 split을 취한 뒤 더해줍니다. 결과는 '90' 입니다.
- 남겨진 정수는 순서대로 '55', '90' 입니다.
- '55' - '90' 을 취한 뒤 이를 출력합니다.
728x90
반응형
'생활 > 코테' 카테고리의 다른 글
A+B (feat. 백준, 1000번) (0) | 2022.08.09 |
---|---|
두 수 비교하기 (feat. 백준, 1330번) (0) | 2022.08.08 |
ATM (feat. 백준, 11399번) (0) | 2022.08.08 |
회의실 배정 (feat. 백준, 1931번) (0) | 2022.08.08 |
커트라인 (feat. 백준, 25305번) (0) | 2022.08.08 |
Comments