본문 바로가기
Computer Science

A기실 계산기1 / 스택

by OKOK 2018. 12. 13.

1. 후위표기법?

2. 푸쉬팝

3. 기본적으로 탑이라는 변수 있고, 왔다 갔다만 하면 됨

4. 스택이라는 자료구조 설명 가능


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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
#define MAX 10
//#define MAX 10001
 
#include <stdio.h>
 
char infix[MAX];
char postfix[MAX];
int stack[MAX];
int top;
 
void push(int num)
{
    stack[++top] = num;
}
 
int pop()
{
    return stack[top--];
}
 
int main()
{
    freopen("input.txt""r", stdin);
    int T;
    int length;
    int idx;
    int res;
    int tmp1, tmp2;
    int i;
 
    for (T = 1; T <= 10++T)
    {
        top = -1;
        idx = 0;
        res = 0;
        scanf("%d"&length);
        scanf("%s", infix);
        for (i = 0; i < length; ++i)
        {
            if ((infix[i] >= '0'&& (infix[i] <= '9'))
                postfix[idx++= infix[i];
            else if (infix[i] == '+')
            {
                while ((top > -1&& (stack[top] == '+'))
                    postfix[idx++= pop();
                push(infix[i]);
            }
        }
        while (top > -1)
            postfix[idx++= pop();
        for (i = 0; i < idx; ++i)
        {
            if ((postfix[i] >= '0'&& (postfix[i] <= '9'))
                push(postfix[i] - '0');
            else if (postfix[i] == '+')
            {
                tmp2 = pop();
                tmp1 = pop();
                push(tmp1 + tmp2);
            }
        }
        printf("#%d %d\n", T, pop());
    }
 
    return 0;
}
 
cs


'Computer Science' 카테고리의 다른 글

A기실 미로1 / 큐문제에 재귀로  (0) 2018.12.13
A기실 암호생성기 / 큐  (0) 2018.12.13
A 실 기 길찾기 / DFS  (0) 2018.12.13
A 기 실 괄호짝짓기 / 스택  (0) 2018.12.13
A 기 실 거듭 제곱 / 재귀  (0) 2018.12.13

댓글