문제 출처:https://www.acmicpc.net/problem/5355
문제 분석
저는 처음에 연산 우선도도 따라야는 문제인줄 알았으나 예제를 살펴본 결과 그냥 앞에서부터 연산하는 것입니다. 따라서 크게 복잡하게 생각하지 않고 주어진 인풋에 따라 더해주고 곱해주고 빼주면 되는 문제였습니다. 다만 각 라인별로 몇개의 input이 주어질지 모르기에 line by line으로 값을 받아와야 합니다.
코드는 다음과 같습니다:
#include <iostream>
using namespace std ;
int main(){
ios::sync_with_stdio(false) ;
cin.tie(NULL) ; cout.tie(NULL) ;
int T ;
double num ;
cin >> T ;
cout << fixed;
cout.precision(2);
for(int i = 0 ; i < T ; i++){
cin >> num ;
string line ;
getline(cin, line) ;
for(auto c : line)
switch (c){
case '@' : num *= 3 ; break ;
case '%' : num += 5 ; break ;
case '#' : num -= 7 ; break ;
}
cout << num << endl ;
}
return 0 ;
}
해당 문제는 Github에서도 보실 수 있습니다:
https://github.com/gurcks8989/CodingTest/blob/master/BackJoon/HPS/P5355_Mars_Math.cpp
훈수 및 조언은 언제든 환영입니다.