π£ λ¬Έμ μ΄ν΄
νμ νκΈ°μκ³Ό κ° νΌμ°μ°μμ λμνλ κ°λ€μ΄ μ£Όμ΄μ§ λ, κ·Έ μμ κ³μ°νλ λ¬Έμ μ΄λ€.
μ€ν(Stack)μ νμ©νμ¬ νμ΄νλ€.
π νμ΄ κ³Όμ
μμ± μΈμ΄: C++
#include <iostream>
#include <stack>
using namespace std;
int main() {
string operation = "";
int numCnt = 0;
int alphabet[30] = {0, };
stack<double> oper_Stack;
// μ
λ ₯μ μμ νμ νκΈ°μ μ
λ ₯λ°κΈ°
cin >> numCnt >> operation;
// νΌμ°μ°μμ λμνλ κ° μ
λ ₯λ°κΈ°
for (int i = 0; i < numCnt; ++i) {
cin >> alphabet[i];
}
for (int i = 0; i < operation.length(); ++i) {
double num1 = 0.0, num2 = 0.0, result = 0.0;
// μ°μ°μμΈ κ²½μ° μ€ν topμ λ λΉμ°μ°μλ₯Ό κΊΌλ΄μ μ°μ° ν λ€μ push, νΌμ°μ°μμΈ κ²½μ° μ€νμ λ°λ‘ push
if (operation[i] == '+' || operation[i] == '-' || operation[i] == '*' || operation[i] == '/') {
/* μ°μ°μ */
num2 = oper_Stack.top();
oper_Stack.pop();
num1 = oper_Stack.top();
oper_Stack.pop();
switch (operation[i]) {
case '+':
result = num1 + num2;
break;
case '-':
result = num1 - num2;
break;
case '*':
result = num1 * num2;
break;
case '/':
result = num1 / num2;
break;
}
oper_Stack.push(result);
}else {
/* νΌμ°μ°μ */
oper_Stack.push(alphabet[operation[i]-'A']);
}
}
// μμμ λμ§Έ μ리κΉμ§ μΆλ ₯
cout << fixed;
cout.precision(2);
cout << oper_Stack.top() << endl;
return 0;
}
π€ νΌμ°μ°μμ κ²½μ° μ€νμ push νλ€.
π€ μ°μ°μλ₯Ό λ§λλ κ²½μ°, μ€ν μλ¨μ λ νΌμ°μ°μλ₯Ό λΆλ¬μ€κ³ κ³μ°ν κ²°κ³Ό κ°μΌλ‘ λ체νλ€.
π€ λͺ¨λ μ°μ°μ μ²λ¦¬ν ν, μ€νμ λ¨μμλ λ§μ§λ§ κ°μ΄ κ³μ° κ²°κ³Όκ° λλ€.
π λ°°μ΄ μ
μ΄μ μ νμλ [νμ νκΈ°μ] λ¬Έμ λ μ€νμ νμ©νμ¬ νμ νκΈ°μμ λ§λλ κ²μ΄μλ€λ©΄
μ΄λ²μ νΌ [νμ νκΈ°μ2] λ¬Έμ λ μ€νμ νμ©νμ¬ νμ νκΈ°μ μ°μ°μ μ²λ¦¬νλ κ³Όμ μ ꡬννλ κ²μ΄μλ€.
λ€λ₯Έ νμ΄λ‘λ νμ΄λ³΄λ©° μ μ€νμ νμ©νλ κ²μ΄ μ΅μ μΈμ§ κ³ λ―Όν΄λ³΄κ² λμκ³ ,
μ€νμ νμ©ν λ¬Έμ νμ΄μ νΉμ§μ μ’ λ 체κ°ν μ μκ² λμλ€.
'Problem_Solving' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[2018 KAKAO BLIND RECRUITMENT] λΉλ°μ§λ (0) | 2020.08.28 |
---|---|
[2020 μΉ΄μΉ΄μ€ μΈν΄μ for Tech developers] ν€ν¨λ λλ₯΄κΈ° (0) | 2020.08.27 |
[BOJ] λ°±μ€ 1918 νμ νκΈ°μ / μ€ν(Stack) (0) | 2020.07.18 |
[BOJ] λ°±μ€ 10828 μ€ν / μ€ν(Stack) (0) | 2020.07.17 |
[2019 μΉ΄μΉ΄μ€ κ°λ°μ κ²¨μΈ μΈν΄μ] λΆλ μ¬μ©μ (0) | 2020.05.01 |