#10828. 스택
1. 문제 이해
스택에 pop, push 등 기본적인 기능을 이해하고 해결 하는 문제 입니다.
2. 접근 방법
stack의 push와 pop에 대한 이해를 바탕으로 문제를 해결해 나가도록 하겠습니다.
3. 문제 해결
1단계와 2단계로 나누어서 문제를 해결 나가기로 하겠습니다.
[1단계]
문제에서 주어진 함수기능 구현합니다.
[2단계]
문자열 비교를 활용하여 문제해결을 진행하였습니다. 좀 더 효율적인 방법을 생각해 보았으나 , 찾지 못 했습니다....
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 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 | #include <stdio.h> #include<string.h> #define MAX 10000 typedef struct Stack { int s[MAX]; int top; }Stack; Stack stack; void push(int x) { if (stack.top == MAX - 1) { } else { stack.s[++stack.top] = x; } } int pop() { if (stack.top == -1) { return -1; } else { stack.top -= 1; return stack.s[stack.top+1]; } } int size() { return stack.top + 1; } int empty() { if (stack.top == -1) { return 1; } else { return 0; } } int top() { if (stack.top == -1) { return -1; } else { return stack.s[stack.top]; } } int main() { int num; int pnum; int i; char c[20]; stack.top = -1; scanf("%d", &num); for (i = 0; i < num; i++) { scanf("%s", c); if (!strcmp(c, "push")) { scanf("%d", &pnum); push(pnum); } else if (!strcmp(c, "pop")) { printf("%d\n", pop()); } else if (!strcmp(c, "size")) { printf("%d\n", size()); } else if (!strcmp(c, "empty")) { printf("%d\n", empty()); } else { printf("%d\n", top()); } } return 0; } | cs |
※ 느낀점
1. strcmp(a, b)
- a의 유니코드가 b의 유니코드보다 더 크면 양수.
- a의 유니코드가 b의 유니코드보다 더 작으면 음수. => 즉, 두 값이 다르면 +,-
- 같으면 0
tip)) c는 0이 아닌수는 true, 0이면 false 입니다.
'Algorithm > solution' 카테고리의 다른 글
#10815. 숫자카드 (0) | 2017.12.24 |
---|---|
#1065. 한수 (0) | 2017.12.24 |
#1654. 랜선자르기 (0) | 2017.12.23 |
#11866. 조세퍼스 문제 (0) | 2017.12.01 |
#1874. 스택수열 (1) | 2017.11.29 |