λ°μν
https://www.acmicpc.net/problem/1918
νμ΄
νΌμ°μ°μλ λ°λ‘ λ΅ λ¬Έμμ΄μ λ£λλ€.
μ°μ°μλ μ€νμ λ£μ΄μ κ΄λ¦¬νλ€.
λ«ν κ΄νΈκ° λμ€λ©΄
μ€ν λ΄μ μ΄λ¦° κ΄νΈκ° λμ¬ λκΉμ§ μ€νμ μλ μ°μ¬μλ€μ λ½μμ λ΅ λ¬Έμμ΄μ λ£λλ€.
μ°μ°μλ₯Ό μ€νμ λ£μ λ μ€ν λ΄ μ°μ°μκ° νμ¬ μ°μ°μλ³΄λ€ μ°μ μμκ° λκ±°λ κ°λ€λ©΄
μ€νμ μλ μ°μ°μλ₯Ό λ€ λ½μμ λ΅ λ¬Έμμ΄μ λ£λλ€
#include <iostream>
#include <stack>
using namespace std;
int priority(char c) {
if(c=='*' || c=='/') return 1;
if(c=='+' || c=='-') return 2;
if(c=='(' || c==')') return 3;
return 0;
}
int main() {
stack<char> op;
string ans = "";
string input;
cin >> input;
for(char i : input) {
if(priority(i)==0) { // νΌμ°μ°μ
ans += i;
} else if(i=='(') {
op.push(i);
} else if(i==')') {
while(!op.empty() && op.top()!='(') {
ans += op.top();
op.pop();
}
op.pop();
} else { // μ°μ°μ *,/,+,-
while(!op.empty() && priority(op.top()) <= priority(i)) {
ans += op.top();
op.pop();
}
op.push(i);
}
}
while(!op.empty()) {
ans += op.top();
op.pop();
}
cout << ans;
}
λ°μν
'ποΈ ICPC Sinchon > Linear Data Structure' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[BOJ][C++] λ°±μ€ 1966λ²: νλ¦°ν° ν (0) | 2023.11.07 |
---|---|
[BOJ][C++] λ°±μ€ 17299λ²: μ€λ±ν°μ (0) | 2023.05.25 |
[BOJ][C++] λ°±μ€ 14425λ²: λ¬Έμμ΄ μ§ν© (0) | 2023.05.23 |
[BOJ][C++] λ°±μ€ 20301λ²: λ°μ μμΈνΈμ€ (0) | 2023.04.08 |
[BOJ S4][C++] λ°±μ€ 14911λ²: κΆν© μ μ°ΎκΈ° (0) | 2022.12.30 |