삼항 연산자가 얽혀있는
1 != 2 ? 3 > 4 ? 5 >= 6 ? 7 : 8 == 9 ? 10 : 11 : 12 : 13
와 같은 식의 결과값을 출력하는 문제
#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
#include <cstdio>
#include <cstring>
#include <cmath>
#include <map>
#include <vector>
#include <string>
#include <utility>
#include <algorithm>
#include <stack>
#include <queue>
#include <functional>
#include <stdlib.h>
using namespace std;
class Node {
public :
char isValue;
int value = 'n';
Node* left;
Node* right;
Node* parent;
};
pair<char, int> nodes[10001]; // f, t, v
int isNode[10001];
string a;
char colone = ':';
char quest = '?';
int main() {
//getline(cin, a);
Node* head = new Node();
Node* now = head;
int tempInt;
while(cin.eof() == false) {
cin >> a;
//cout << a << endl;
if (a == "!=") { //!=
int value1 = now->value;
cin >> tempInt;
if (value1 != tempInt) now->isValue = 't';
else now->isValue = 'f';
}
else if (a== "==") { //==
int value1 = now->value;
cin >> tempInt;
if (value1 == tempInt) now->isValue = 't';
else now->isValue = 'f';
}
else if (a == "<=") {
int value1 = now->value;
cin >> tempInt;
if (value1 <= tempInt) now->isValue = 't';
else now->isValue = 'f';
}
else if (a == "<" ){ // <
int value1 = now->value;
cin >> tempInt;
if (value1 < tempInt) now->isValue = 't';
else now->isValue = 'f';
}
else if (a == ">=") {
int value1 = now->value;
cin >> tempInt;
if (value1 >= tempInt) now->isValue = 't';
else now->isValue = 'f';
}
else if (a == ">") {
int value1 = now->value;
cin >> tempInt;
if (value1 > tempInt) now->isValue = 't';
else now->isValue = 'f';
}
else if (a == ":") {
Node* temp = now;
while (true) {
if (temp->isValue != 'v' && temp->right == NULL) {
temp->right = new Node();
temp->right->parent = temp;
now = temp->right;
break;
}
else {
temp = temp->parent;
}
}
}
else if (a == "?") {
now->left = new Node();
now->left->parent = now;
now = now->left;
}
else { // value
now->isValue = 'v';
now->value = stoi(a);
}
}
Node* temp = head;
while (true) {
if (temp->isValue == 'v') {
cout << temp->value << endl;
break;
}
else {
if (temp->isValue == 'f') {
temp = temp->right;
}
else {
temp = temp->left;
}
}
}
return 0;
}
'코딩 > 알고리즘' 카테고리의 다른 글
백준 2618 경찰차 (0) | 2018.05.18 |
---|---|
백준 13325 이진 트리 (0) | 2018.05.15 |
마이다스 18년 대회 4번 (0) | 2018.05.12 |
마이다스 18년 대회 3번 (0) | 2018.05.12 |
마이다스 18년 대회 1번 (0) | 2018.05.12 |