본문 바로가기
정올 문제풀이

정올 1102 : 스택(stack)

by watergrace2u 2020. 5. 10.
반응형
SMALL

 

아래 코드에서 가장 중요한 건 '버퍼' 이다. scanf가 어떤 식으로 동작하는지 개념을 잘 알고 있어한다. getchar(); 를 이용하여 버퍼를 비워주지 않으면, 버퍼에 '\n'가 계속 남아있어서 원하는 결과가 나오지 않는다.

 

#include <stdio.h>

int main() {
	char input;
	int n,add,count=0;
	int num[100];

	scanf("%d", &n);
	while (getchar() != '\n'); // 그냥 getchar();로 해도 된다.
	for (int i = 0; i < n; i++) {
		scanf("%c", &input);

		if (input == 'i') {
			scanf("%d", &add);
			num[count++] = add;
			getchar();
		}
		else if (input == 'c') {
			printf("%d\n", count);
			getchar();
		}
		else if (input == 'o') {
			if (count == 0) {
				printf("empty\n");
				getchar();
			}
			else {
				printf("%d\n", num[count-1]);
				count--;
				getchar();
			}
		}
		
	}

}
반응형
LIST

댓글