ÀڷᱸÁ¶
??

[ÀڷᱸÁ¶]



À̰÷¿¡¼­´Â ÀڷᱸÁ¶¸¦ ÇнÀÇÕ´Ï´Ù.

1. Stack

(ÇÁ·Î±×·¥-1, ¼ö½Ä°è»ê-1) #include<stdio.h> #include<string.h> #include<conio.h> char a[100], k[100], s[100]; int main() { scanf("%s",a); int i, sp=0, kp=0; for(i=0; i<=strlen(a); i++){ if(a[i] >= 48 && a[i] <=57){ kp++; k[kp]=a[i]; } else{ if(a[i] == '*' || a[i] == '/'){ sp++; s[sp]=a[i]; } else if(a[i] == '+' || a[i] == '-'){ if(s[sp] =='*' || s[sp] =='/'){ kp++; k[kp]=s[sp]; sp--; } sp++; s[sp]=a[i]; } else if(a[i]=='('){ sp++; s[sp]=a[i]; } else if(a[i]==')'){ while(1){ if(s[sp]=='('){ sp--; break; } kp++; k[kp]=s[sp]; sp--; } } } } while(1) { kp++; k[kp]=s[sp]; sp--; if(sp==0) break; } int aa, bb; sp=0; for(i=1; i<=kp; i++){ if(k[i]>='0' && k[i]<='9'){ sp++; s[sp] = k[i]; } else{ if(k[i]=='*'){ aa = s[sp]-'0'; sp--; bb = s[sp]-'0'; sp--; sp++; s[sp]=(aa*bb)+'0'; }else if(k[i]=='/'){ aa = s[sp]-'0'; sp--; bb = s[sp]-'0'; sp--; sp++; s[sp]=(bb/aa)+'0'; }else if(k[i]=='+'){ aa = s[sp]-'0'; sp--; bb = s[sp]-'0'; sp--; sp++; s[sp]=(aa+bb)+'0'; }else if(k[i]=='-'){ aa = s[sp]-'0'; sp--; bb = s[sp]-'0'; sp--; sp++; s[sp]=(bb-aa)+'0'; } } } printf("dap=%d\n",s[1]-'0'); getch(); return 0; }

(ÇÁ·Î±×·¥-2, ¼ö½Ä°è»ê-2) #include<stdio.h> #include<string.h> char a[100], c[100]; int ka, bp=-1, cp=-1,kp=-1; int k[101]; struct data{ bool f; int b; }b[100]; int ff=0; int main() { int i; scanf("%s",a); ka=strlen(a); for(i=0; i<ka; i++){ if(a[i]>='0' && a[i] <='9'){ if(ff==0) bp++; b[bp].f=0; b[bp].b=b[bp].b*10+(a[i]-'0'); ff=1; } else if(a[i]=='*' || a[i]=='/'){ ff=0; if(c[cp]=='*' || c[cp]=='/'){ bp++; b[bp].f=1; b[bp].b=c[cp]; cp--; } cp++; c[cp]=a[i]; } else if(a[i]=='+' || a[i]=='-'){ ff=0; if(c[cp]=='*' || c[cp]=='/' || c[cp]=='+' || c[cp]=='-'){ bp++; b[bp].f=1; b[bp].b=c[cp]; cp--; } cp++; c[cp]=a[i]; } else if(a[i]=='('){ cp++; c[cp]=a[i]; } else if(a[i]==')'){ while(c[cp]!='('){ bp++; b[bp].f=1; b[bp].b=c[cp]; cp--; } cp--; } } for(i=cp; i>=0; i--){ bp++; b[bp].f=1; b[bp].b=c[cp]; cp--; } for(i=0; i<=bp; i++){ if(b[i].f==0) printf("%d ",b[i].b); else printf("%c ",b[i].b); } printf("\n"); for(i=0; i<=bp; i++){ if(b[i].f==0){ kp++; k[kp]=b[i].b; } else if(b[i].f==1){ if(b[i].b=='+'){k[kp-1]=k[kp-1]+k[kp];kp--;} else if(b[i].b=='-'){k[kp-1]=k[kp-1]-k[kp];kp--;} else if(b[i].b=='*'){k[kp-1]=k[kp-1]*k[kp];kp--;} else if(b[i].b=='/'){k[kp-1]=k[kp-1]/k[kp];kp--;} } } printf("ans=%d\n",k[0]); return 0; }



Number of visitors today: 70573

??