반응형
https://www.acmicpc.net/problem/21737
문자열 parsing 후 구현 문제였습니다.
풀이방법
1. 숫자는 숫자끼리, 계산명령어는 명령어끼리 parsing해 각각의 vector에 저장했습니다.
2. 명령어의 size만큼 확인하면서 계산을 수행합니다.
Code
#include <bits/stdc++.h>
using namespace std;
using ll = long long;
ll n, cFlag, output, idx;
string s;
vector <ll> nums;
vector <char> op;
void parsing(){
string tmp;
for(ll i = 0; i < s.size(); i++){
if(s[i] == 'S' || s[i] == 'M' || s[i] == 'U' || s[i] == 'P' || s[i] == 'C' || i == s.size() - 1){
if(s[i] == 'C') cFlag = 1;
op.push_back(s[i]);
if(tmp.size()) nums.push_back(stoi(tmp));
tmp = "";
continue;
}
tmp += s[i];
}
}
void operating(){
output = nums[0];
for(auto o : op){
if(o == 'S') output -= nums[++idx];
else if(o == 'M') output *= nums[++idx];
else if(o == 'U'){
if(output < 0) output = -(-output / nums[++idx]);
else output = output / nums[++idx];
}
else if(o == 'P') output += nums[++idx];
else cout << output << ' ';
}
}
int main(){
cin >> n >> s;
parsing();
if(!cFlag){ cout << "NO OUTPUT"; return 0; }
operating();
}
'Algorithm > Implementation' 카테고리의 다른 글
(C++) - 백준(BOJ) 20165번 : 인내의 도미노 장인 호석 (0) | 2021.07.29 |
---|---|
(C++) - 백준(BOJ) 17826번 : 나의 학점은? (0) | 2021.07.26 |
(C++) - 백준(BOJ) 3425번 : 고스택 (0) | 2021.07.05 |
(C++) - 백준(BOJ) 2028번 : 자기복제수 (0) | 2021.07.03 |
(C++) - 프로그래머스(2020 KAKAO BLIND RECRUITMENT) : 기둥과 보 설치 (0) | 2021.06.28 |