티스토리 뷰

알고리즘/SWEA

[SWEA 1224] 계산기3

히더 2018. 8. 10. 17:18

SWEA::1224::계산기3


출처 : https://www.swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AV14tDX6AFgCFAYD


#include <stdio.h>

#include <algorithm>


char data[501];

char arr[501], arr2[501];

int calc[501];

int a, b, c;

char d[4][2] = { { 0, 3 },{ -1, -1 },{ 2, 2 },{ 1, 1 } };


int main() {

int tc, N, i;


for (tc = 1; tc <= 10; tc++) 

{

scanf("%d", &N);scanf("%s", data);


a = b = c = 0;


for (i = 0; i < N; i++) {

if (data[i] == '(' || data[i] == '+' || data[i] == '*') {

while (b > 0 && d[arr2[b - 1] - '('][0] >= d[data[i] - '('][1]) {

arr[a] = arr2[b - 1];

a++;

b--;

}

arr2[b] = data[i];

b++;

}

else if (data[i] == ')')

{

while (arr2[b - 1] != '(') {

arr[a] = arr2[b - 1];

a++;

b--;

}

b--;

}

else if (data[i] >= '0' && data[i] <= '9')

{

arr[a] = data[i];

a++;

}

}

while (b) {

arr[a] = arr2[b - 1];

a++;

b--;

}


for (i = 0; i < a; i++) {

if (arr[i] >= '0' && arr[i] <= '9') {

calc[c] = arr[i] - '0';

c++;

}

else if (arr[i] == '+') {

calc[c - 2] = calc[c - 2] + calc[c - 1];

c--;

}

else if (arr[i] == '*') {

calc[c - 2] = calc[c - 2] * calc[c - 1];

c--;

}

}


printf("#%d %d\n", tc, calc[0]);

}


return 0;

}



'알고리즘 > SWEA' 카테고리의 다른 글

[SWEA 2383] 점심 식사시간  (2) 2018.08.16
[SWEA 1244] 최대 상금  (0) 2018.08.13
[SWEA 1223] 계산기2  (0) 2018.08.10
[SWEA 1222] 계산기1  (0) 2018.08.10
[SWEA 1221] GNS  (0) 2018.08.10
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/01   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함