본문 바로가기
Programming/C

C / 정보처리기사 실기 문제 풀이 2 - 스택(STACK)

by with chu 2021. 5. 16.
728x90

C / 정보처리기사 실기 문제 풀이 2


 

1.

'스택'이라는 자료구조 형태를 활용한 문제이다.
스택에 대한 개념은 해당 링크 참조 > https://devuna.tistory.com/22

 

[자료구조] 스택 (STACK), 큐(QUEUE) 개념/비교 /활용 예시

[자료구조] 스택 (STACK), 큐(QUEUE) 개념/비교 /활용 예시/ 실생활 활용 스택 (STACK)이란? 📌 스택의 개념 스택(stack)이란 쌓아 올린다는 것을 의미한다. 따라서 스택 자료구조라는 것은 책을 쌓는 것

devuna.tistory.com

 

#include <stdio.h>
#define MAX_SIZE 10
 
int isWhat[MAX_SIZE];
int point= -1; 
 
void into(int num) {
    if (point >= 10) printf("Full");
    isWhat[++point] = num;
}
 
int take() {
    if (isEmpty() == 1) printf("Empty");
    return isWhat[point--];
}
 
int isEmpty() {
    if (point == -1) return 1;
    return 0;
}
 
int isFull() {
    if (point == 10) return 1;
    return 0;
}
 
int main(int argc, char const *argv[]){
    int e;
    into(5); into(2);
    while(!isEmpty()){
        printf("%d", take());
        into(4); into(1); printf("%d", take()); 
        into(3); printf("%d", take()); printf("%d", take()); 
        into(6); printf("%d", take()); printf("%d", take()); 
    }
    return 0;
}


int isWhat[MAX_SIZE]; 라고 선언했을 때
예를 들면 isWhat[-1] 하면 -1자리에 있는 값을 꺼낸다는 뜻

1. main() 함수가 실행된다 
2. into(5) 함수를 호출하여 스택 point 0자리에 5를 넣는다 (++point)
3. into(2) 함수를 호출하여 스택 point 1자리에 2를 넣는다  

point num
2  
1 2
0 5

  
4. take()함수를 호출하여 point 1자리의 2를 출력한다 (point--)
5. into(4); into(1); 위와 동일하게 스택 point 1자리에 4를 넣고, 2자리에 1을 넣는다

point num
2 1
1 4
0 5


6.  take()함수를 호출하여 point 2자리의 1을 출력한다
7. 동일한 방법으로 into(3); 3을 쌓아올리고 take()함수로 위에서부터 2개를 출력한다

point num
2 3
1 4
0 5


8. 6을 쌓아올리고 위에서부터  2개 출력

point num
2  
1 6
0 5



따라서 출력 결과는 213465 이다

 

 

 

728x90

'Programming > C' 카테고리의 다른 글

C / 정보처리기사 실기 문제 풀이1  (0) 2021.05.13

댓글