문제 링크 : https://www.swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AV141J8KAIcCFAYD


문제의 저작권은 SW Expert Academy에 있습니다.



#include #include using namespace std; typedef struct _node { bool isNum; long double num; char op; int lIdx; int rIdx; } node; node *nodes; long double getNum(int idx) { if(nodes[idx].isNum) return nodes[idx].num; else { switch(nodes[idx].op) { case '+': return getNum(nodes[idx].lIdx-1) + getNum(nodes[idx].rIdx-1); break; case '-': return getNum(nodes[idx].lIdx-1) - getNum(nodes[idx].rIdx-1); break; case '*': return getNum(nodes[idx].lIdx-1) * getNum(nodes[idx].rIdx-1); break; case '/': return getNum(nodes[idx].lIdx-1) / getNum(nodes[idx].rIdx-1); break; } } } int main(void) { int T, N; char temp; string tempStr; //cin >> T; T = 10; for(int t_case=0; t_case> N; nodes = (node*)malloc(sizeof(node)*N); for(int i=0; i> tempStr; cin >> tempStr; if(tempStr.at(0) >= '0' & tempStr.at(0) <= '9') { nodes[i].isNum = true; nodes[i].num = stoi(tempStr); //(int)(temp - '0'); } else { nodes[i].isNum = false; nodes[i].op = tempStr.at(0); cin >> nodes[i].lIdx; cin >> nodes[i].rIdx; } } cout << "#" << t_case+1 << " " << (int)getNum(0) << "\n"; free(nodes); } return 0; }

+ Recent posts