728x90
C / 정보처리기사 실기 문제 풀이 2
1.
'스택'이라는 자료구조 형태를 활용한 문제이다.
스택에 대한 개념은 해당 링크 참조 > https://devuna.tistory.com/22
#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 |
---|
댓글