반응형
https://www.acmicpc.net/problem/1541
문제 해결 알고리즘
그리디 알고리즘으로 '+'연산부터 전부 연산 해준 뒤 '-'연산을 해준다. 파싱해주는 게 까다로웠던 문제였다.
소스 코드
#include <bits/stdc++.h>
using namespace std;
int main(){
string str; cin >> str;
int result = 99999999;
string num = "";
vector<int> number;
vector<char> opt;
for(int i=0;i<str.size();i++){
if('0' <= str[i] && str[i] <= '9') num.push_back(str[i]);
else {
opt.push_back(str[i]);
if(num != "") {
number.push_back(stoi(num));
num = "";
}
}
if(i == str.size() - 1){
number.push_back(stoi(num));
num = "";
}
}
for(int i=0;i<opt.size();i++){
if(opt[i] == '+'){
number[i]+=number[i+1];
number.erase(number.begin()+i+1);
opt.erase(opt.begin()+i);
i--;
}
}
for(int i=0;i<opt.size();i++){
if(opt[i] == '-'){
number[i]-=number[i+1];
number.erase(number.begin()+i+1);
opt.erase(opt.begin()+i);
i--;
}
}
for(int i=0;i<number.size();i++) {
result = min(result, number[i]);
}
cout << result;
}
반응형
'알고리즘 문제 해결 > BOJ' 카테고리의 다른 글
[비트마스킹, 구현] BOJ 11723 집합 (0) | 2021.11.24 |
---|---|
[DP] BOJ 9465 스티커 (0) | 2021.11.21 |
[DFS] BOJ 1967 트리의 지름 (0) | 2021.11.15 |
[정렬] BOJ 18870 좌표 압축 (0) | 2021.11.12 |
[그리디] BOJ 11399 ATM (0) | 2021.11.09 |