본문 바로가기

Computer Science&Engineering/코딩테스트

[백준 10828] 스택

문제 링크

www.acmicpc.net/problem/10828

 

10828번: 스택

첫째 줄에 주어지는 명령의 수 N (1 ≤ N ≤ 10,000)이 주어진다. 둘째 줄부터 N개의 줄에는 명령이 하나씩 주어진다. 주어지는 정수는 1보다 크거나 같고, 100,000보다 작거나 같다. 문제에 나와있지

www.acmicpc.net

스택의 동작을 구현하도록 한 문제이다. 처음에는 각각의 동작을 함수로 구현했으나, 나중에 생각해보니 단순 출력만 하면 되는데 굳이? 라는 생각이 들어 그냥 바로 출력해버리도록 구현했다. 제출 시에 함수 return 을 제대로 해주지 않으면 오류가 나서, 그냥 단순하게 구현하는게 베스트라는 생각이 들었다. main 함수도 return 0; 가 없으면 에러난다. 

 

# 제출 코드

#include <stdio.h>
#include <string.h>

int stack[10000+10];
int pointer;

int main() {
	int N;
	char op[8];
	int num;
	
	scanf("%d ", &N); 
	while(N--){
		scanf("%s", op);
		if(!strcmp(op,"push")) {scanf("%d", &num); stack[pointer++] = num;}
		else if (!strcmp(op, "top")) printf("%d\n", (pointer <= 0)? -1 :stack[pointer-1]); 
		else if (!strcmp(op, "size")) printf("%d\n", pointer);
		else if (!strcmp(op, "empty")) printf("%d\n", pointer==0); 
		else printf("%d\n", (pointer <= 0)? -1:stack[--pointer]); 
	}
	return 0;
}
반응형