본문 바로가기
코딩테스트/백준

[백준 C++] BOJ 10828번 : 스택

by 으얏 2023. 1. 18.

문제 바로가기:

https://www.acmicpc.net/problem/10828

 

10828번: 스택

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

www.acmicpc.net

 

간단하게 스택에 관한 공부를 한 뒤 풀어보면 좋습니다.

 

#include <bits/stdc++.h>

using namespace std;

const int MX = 1000005;
int dat[MX];
int pos;

void push(int val)
{
	dat[pos++] = val;
}

void pop()
{
	pos--;
}

int top()
{
	return dat[pos - 1];
}

int main(void)
{
	ios::sync_with_stdio(0);
	cin.tie(0);
	int n;
	cin >> n;
	while(n--)
	{
		string c;
		cin >> c;
		if (c == "push")
		{
			int t;
			cin >> t;
			push(t);
		}

	else if(c == "pop")
		{
			if (pos == 0)
			{
				cout << -1 << '\n';
			}
			else
			{
				cout << top() << '\n';
				pop();
			}
		}

		else if (c == "size")
		{
			cout << pos << '\n';
		}

		else if (c == "empty")
		{
			cout << (int)(pos == 0) << '\n';
		}

		else
		{
			if (pos == 0)
			{
				cout << -1 << '\n';
			}

			else
			{
				cout << top() << '\n';
			}
		}
	}
}

 

스택 알고리즘 공부하러 가기:

https://blog.encrypted.gg/933

 

[실전 알고리즘] 0x05강 - 스택

안녕하세요, 오늘은 스택을 조져보려고 합니다. 이번 시간부터 세 단원 동안 스택, 큐, 덱을 다룰건데 셋 다 비슷비슷해서 하나만 익히고 나면 전반적으로 어렵지않고, 내용 자체도 연결리스트

blog.encrypted.gg

 

댓글