using System;
public class Test
{
public static void Main( )
{
string[ ] input = new string[ ] { "(" , "*" , "(" , "+" , "2" , "3" , ")" , "(" , "-" , "5" , "3" , ")" , ")" } ;
foreach( string a in input) {
Console.Write ( a) ;
}
Console.WriteLine ( ) ;
stack( input) ;
}
static void stack( string[ ] data) {
string[ ] stk = new string[ 100 ] ;
for ( int i= 0 ; i< 100 ; i++ ) {
stk[ i] = null ;
}
for ( int i= 0 ; i< data.Length ; i++ ) {
Console.WriteLine ( "data[" + i+ "] : " + data[ i] ) ;
if ( data[ i] == ")" ) {
Console.WriteLine ( "pop start" ) ;
stk = pop( stk, data[ i] ) ;
}
// else if(data[i] !="*" || data[i] !="/" ||data[i] !="+" ||data[i] !="-"){
// cal(stk,data[i]);
// }
else {
stk = push( stk, data[ i] ) ;
}
}
Console.WriteLine ( ) ;
foreach( string b in stk) {
Console.Write ( b) ;
}
}
static string[ ] push( string[ ] stk, string d) {
for ( int i= 0 ; i< 100 ; i++ ) {
if ( stk[ i] == null ) {
stk[ i] = d;
//Console.WriteLine("push : " + stk[i]);
break ;
}
}
return stk;
}
static string[ ] pop( string[ ] stk, string d) {
int sum = 0 ;
int [ ] num = new int [ 10 ] ;
string cal = "" ;
for ( int i= 0 ; i< 10 ; i++ ) {
num[ i] = 0 ;
}
for ( int i= 99 ; i>= 0 ; i-- ) {
// Console.WriteLine("stk : " +stk[i]);
if ( stk[ i] != null ) {
if ( stk[ i] == "(" ) {
Console.WriteLine ( "cal go" ) ;
int cnt = 0 ;
for ( int j = 9 ; j>= 0 ; j-- ) {
if ( num[ j] != 0 ) {
sum = num[ j] ;
cnt = j;
Console.WriteLine ( "cnt : " + cnt) ;
break ;
}
}
for ( int j = 0 ; j< cnt; j++ ) {
if ( num[ j] != 0 ) {
if ( cal == "+" ) {
sum += num[ j] ;
} else if ( cal == "-" ) {
sum = sum- num[ j] ;
} else if ( cal == "*" ) {
sum *= num[ j] ;
} else {
sum /= num[ j] ;
}
}
}
stk[ i] = sum.ToString ( ) ;
Console.WriteLine ( "cal_data : " + sum) ;
Console.Write ( "stk : " ) ;
foreach( string stkd in stk) {
Console.Write ( stkd) ;
}
Console.WriteLine ( ) ;
break ;
} else if ( stk[ i] == "*" || stk[ i] == "/" || stk[ i] == "+" || stk[ i] == "-" ) {
Console.WriteLine ( "cal save" + stk[ i] ) ;
cal = stk[ i] ;
stk[ i] = null ;
} else {
Console.WriteLine ( "num save" ) ;
for ( int j = 0 ; j< 10 ; j++ ) {
if ( num[ j] == 0 ) {
num[ j] = Int32.Parse ( stk[ i] ) ;
stk[ i] = null ;
Console.WriteLine ( "pop : " + num[ j] ) ;
break ;
}
}
}
}
}
return stk;
}
}
dXNpbmcgU3lzdGVtOwoKcHVibGljIGNsYXNzIFRlc3QKewoJcHVibGljIHN0YXRpYyB2b2lkIE1haW4oKQoJewoJCXN0cmluZ1tdIGlucHV0ID0gbmV3IHN0cmluZ1tdeyIoIiwiKiIsIigiLCIrIiwiMiIsIjMiLCIpIiwiKCIsIi0iLCI1IiwiMyIsIikiLCIpIn07CgkJCgkJZm9yZWFjaChzdHJpbmcgYSBpbiBpbnB1dCl7CgkJCUNvbnNvbGUuV3JpdGUoYSk7CgkJfQoJCQlDb25zb2xlLldyaXRlTGluZSgpOwoJCXN0YWNrKGlucHV0KTsKCX0KCQoJc3RhdGljIHZvaWQgc3RhY2soc3RyaW5nW10gZGF0YSl7CgkJCgkJc3RyaW5nW10gc3RrID0gbmV3IHN0cmluZ1sxMDBdOwoJCQoJCWZvcihpbnQgaT0wO2k8MTAwO2krKyl7CgkJCXN0a1tpXT1udWxsOwoJCX0KCQkKCQlmb3IoaW50IGk9MDtpPGRhdGEuTGVuZ3RoO2krKyl7CgkJCUNvbnNvbGUuV3JpdGVMaW5lKCJkYXRhWyIraSsiXSA6ICIrZGF0YVtpXSk7CgkJCWlmKGRhdGFbaV0gPT0iKSIgKXsKCQkJCUNvbnNvbGUuV3JpdGVMaW5lKCJwb3Agc3RhcnQiKTsKCQkJCXN0ayA9IHBvcChzdGssZGF0YVtpXSk7CgkJCX0KCQkvLwllbHNlIGlmKGRhdGFbaV0gIT0iKiIgfHwgZGF0YVtpXSAhPSIvIiB8fGRhdGFbaV0gIT0iKyIgfHxkYXRhW2ldICE9Ii0iKXsKCQkvLwkJY2FsKHN0ayxkYXRhW2ldKTsKCQkvLwl9CgkJCWVsc2V7CgkJCQkKCQkJCXN0ayA9IHB1c2goc3RrLGRhdGFbaV0pOwoJCQl9CgkJfQoJCUNvbnNvbGUuV3JpdGVMaW5lKCk7CgkJZm9yZWFjaChzdHJpbmcgYiBpbiBzdGspewoJCQlDb25zb2xlLldyaXRlKGIpOwoJCX0KCQkKCX0KCQoJc3RhdGljIHN0cmluZ1tdIHB1c2goc3RyaW5nW10gc3RrLHN0cmluZyBkKXsKCQkKCQlmb3IoaW50IGk9MDtpPDEwMDtpKyspewoJCQlpZihzdGtbaV0gPT0gbnVsbCl7CgkJCQlzdGtbaV0gPSBkOwoJCQkJLy9Db25zb2xlLldyaXRlTGluZSgicHVzaCA6ICIgKyBzdGtbaV0pOwoJCQkJYnJlYWs7CgkJCX0KCQl9CgkJCgkJCgkJCgkJCgkJcmV0dXJuIHN0azsKCX0KCQoJc3RhdGljIHN0cmluZ1tdIHBvcChzdHJpbmdbXSBzdGssc3RyaW5nIGQpewoJCQoJCWludCBzdW0gPSAwOwoJCWludFtdIG51bSA9IG5ldyBpbnRbMTBdOwoJCXN0cmluZyBjYWwgPSAiIjsKCQkKCQlmb3IoaW50IGk9MDtpPDEwO2krKyl7CgkJCW51bVtpXT0wOwoJCX0KCQkKCQkKCQkKCQlmb3IoaW50IGk9OTk7aT49MDtpLS0pewoJCS8vCUNvbnNvbGUuV3JpdGVMaW5lKCJzdGsgOiAiICtzdGtbaV0pOwoJCQlpZihzdGtbaV0gIT0gbnVsbCl7CgkJCQkKCQkJCWlmKHN0a1tpXSA9PSAiKCIpewoJCQkJCUNvbnNvbGUuV3JpdGVMaW5lKCJjYWwgZ28iKTsKCQkJCQkKCQkJCQlpbnQgY250ID0gMDsKCQkJCQlmb3IoaW50IGogPSA5O2o+PTA7ai0tKXsKCQkJCQkJaWYobnVtW2pdIT0wKXsKCQkJCQkJCXN1bSA9IG51bVtqXTsKCQkJCQkJCWNudCA9IGo7CgkJCQkJCQlDb25zb2xlLldyaXRlTGluZSgiY250IDogIiArIGNudCk7CgkJCQkJCQlicmVhazsKCQkJCQkJfQoJCQkJCX0KCQkJCQkKCQkJCQlmb3IoaW50IGogPSAwO2o8Y250O2orKyl7CgkJCQkJCWlmKG51bVtqXSE9MCl7CgkJCQkJCQkKCQkJCQkJCWlmKGNhbCA9PSAiKyIpewoJCQkJCQkJCXN1bSArPSBudW1bal07CgkJCQkJCQl9ZWxzZSBpZihjYWwgPT0gIi0iKXsKCQkJCQkJCQlzdW0gPSBzdW0tbnVtW2pdOwoJCQkJCQkJfWVsc2UgaWYoY2FsID09ICIqIil7CgkJCQkJCQkJc3VtICo9IG51bVtqXTsKCQkJCQkJCX1lbHNlewoJCQkJCQkJCXN1bSAvPSBudW1bal07CgkJCQkJCQl9CgoJCQkJCQl9CgkJCQkJfQoJCQkJCXN0a1tpXT1zdW0uVG9TdHJpbmcoKTsKCQkJCQlDb25zb2xlLldyaXRlTGluZSgiY2FsX2RhdGEgOiAiICsgc3VtKTsKCQkJCQlDb25zb2xlLldyaXRlKCJzdGsgOiAiKTsKCQkJCQlmb3JlYWNoKHN0cmluZyBzdGtkIGluIHN0ayl7CgkJCQkJCUNvbnNvbGUuV3JpdGUoc3RrZCk7CgkJCQkJfQoJCQkJCUNvbnNvbGUuV3JpdGVMaW5lKCk7CgkJCQkJYnJlYWs7CgkJCQl9ZWxzZSBpZihzdGtbaV0gPT0iKiIgfHwgc3RrW2ldID09Ii8iIHx8IHN0a1tpXSA9PSIrIiB8fCBzdGtbaV0gPT0iLSIpewoJCQkJCUNvbnNvbGUuV3JpdGVMaW5lKCJjYWwgc2F2ZSIgKyBzdGtbaV0pOwoJCQkJCWNhbCA9IHN0a1tpXTsKCQkJCQlzdGtbaV09bnVsbDsKCQkJCX1lbHNlewoJCQkJCUNvbnNvbGUuV3JpdGVMaW5lKCJudW0gc2F2ZSIpOwoJCQkJCWZvcihpbnQgaiA9IDA7ajwxMDtqKyspewoJCQkJCQlpZihudW1bal09PTApewoJCQkJCQkJbnVtW2pdPUludDMyLlBhcnNlKHN0a1tpXSk7CgkJCQkJCQlzdGtbaV09bnVsbDsKCQkJCQkJCUNvbnNvbGUuV3JpdGVMaW5lKCJwb3AgOiAiICsgbnVtW2pdKTsKCQkJCQkJCWJyZWFrOwoJCQkJCQl9CgkJCQkJfQoJCQkJCQoJCQkJfQoKCQkJfQoJCX0KCQlyZXR1cm4gc3RrOwoJfQoJCgoJCn0=