백준 28278 - 스택 2

황재진·2024년 3월 3일

백준

목록 보기
11/54
post-thumbnail

스택 자료구조에 대해 알고 있으면 쉽게 풀 수 있는 문제입니다.

스택(Stack)은 후입선출(LIFO, Last-In First-Out) 방식을 가지고 있습니다. 그래서 가장 나중에 들어온 요소가 가장 먼저 나가게 됩니다.

프링글스 과자를 생각하면 편합니다. 과자를 넣을 땐 가장 안쪽부터 쌓이지만, 먹을 땐 가장 위에 있는 것부터 먹게 됩니다.

#include <iostream>

int main()
{
	std::cin.tie(NULL);
	std::ios_base::sync_with_stdio(false);

	int n;
	std::cin >> n;

	int* stack = new int[n];
	for (int i = 0; i < n; i++)
		stack[i] = -1;

	int stack_Top = -1;
	for (int i = 0; i < n; i++)
	{
		int commandN, num;
		std::cin >> commandN;

		switch (commandN)
		{
		case 1:
			std::cin >> num;
			stack_Top++;
			stack[stack_Top] = num;
		break;
		case 2:
			if (stack_Top == -1)
				std::cout << "-1\n";
			else
			{
				std::cout << stack[stack_Top] << "\n";
				stack[stack_Top] = -1;
				stack_Top--;
			}
		break;
		case 3:
			std::cout << stack_Top + 1 << "\n";
		break;
		case 4:
			if (stack_Top == -1)
				std::cout << "1\n";
			else
				std::cout << "0\n";
		break;
		case 5:
			if (stack_Top == -1)
				std::cout << "-1\n";
			else
				std::cout << stack[stack_Top] << "\n";
		break;
		}
	}

	return 0;
}
profile
프로그래밍, 쉐이더 등 이것저것 다해보는 게임 개발자입니다

0개의 댓글