๋ฐ์ํ
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++] ๋ฐฑ์ค 20301๋ฒ: ๋ฐ์ ์์ธํธ์ค (0) | 2023.04.08 |
[BOJ S1][C++] ๋ฐฑ์ค 4889๋ฒ : ์์ ์ ์ธ ๋ฌธ์์ด (0) | 2022.09.14 |
[BOJ S3][C++] ๋ฐฑ์ค 18115๋ฒ : ์นด๋ ๋๊ธฐ (0) | 2022.09.12 |