https://www.acmicpc.net/problem/1935
아이디어:
1. 각 알파벳에 대응하는 수를 26 크기의 double 형 배열로 입력받는다.
2. string으로 후위 표기식을 입력받고, char 형 스택을 사용한다.
3. 알파벳이 들어오면 스택에 삽입하고, 연산자가 들어오면 스택에서 값을 2개 꺼내서 계산한다.
4. 마지막에 스택에 남은 값을 출력한다.
5. 소수점 출력: fixed는 소수점을 고정해서 출력하겠다는 의미이고, precision()는 소수점 아래 자리수를 이야기하며 그 아래는 자동 반올림된다.
cout << fixed;
cout.precision(2);
cout << S.top();
#include <iostream>
#include <bits/stdc++.h>
using namespace std;
int main() {
ios::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
string calc;
stack<double> S;
double a, b, ans = 0;
int n;
double arr[26];
fill(arr, arr + 26, 0);
cin >> n;
cin >> calc;
for (int i = 0; i < n; i++)
cin >> arr[i];
for (auto i : calc) {
switch (i) {
case '+':
b = S.top();
S.pop();
a = S.top();
S.pop();
S.push(a + b);
break;
case '-':
b = S.top();
S.pop();
a = S.top();
S.pop();
S.push(a - b);
break;
case '*':
b = S.top();
S.pop();
a = S.top();
S.pop();
S.push(a * b);
break;
case '/':
b = S.top();
S.pop();
a = S.top();
S.pop();
S.push(a / b);
break;
default:
S.push(arr[i - 'A']);
break;
}
}
cout << fixed;
cout.precision(2);
cout << S.top();
return 0;
}
'algorithm' 카테고리의 다른 글
백준 17413번 단어 뒤집기 2 (0) | 2025.02.23 |
---|---|
백준 12789번 도키도키 간식드리미 (0) | 2025.02.23 |
백준 4949번 균형잡힌 세상 (0) | 2025.02.21 |
백준 17608번 막대기 (0) | 2025.02.17 |
백준 12605번 단어순서 뒤집기, C++ stringstream으로 문자열 공백 기준 자르기 (0) | 2025.02.17 |