본문 바로가기
개발/백준 & 프로그래머스

[백준]10828번 스택 c/c++

by 성장하고픈개발자 2022. 6. 26.
728x90
728x90

문제

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

1. c++의 stack 헤더를 사용하여 풀이

 

#include<iostream>
#include<stack>
#include<string>
using namespace std;

int main()
{
	stack<int> stk; //스택 생성
	int t, num;
	cin >> t; //테스트케이스 개수

	for (int i = 0; i < t; i++) {
		string s;
		cin >> s; //문자열 입력

		if (s == "push") { //push
			cin >> num;
			stk.push(num);
		}
		else if (s == "pop") {  //pop
			if (stk.empty() == true) {
				cout << -1 << '\n';
			}
			else {
				cout << stk.top() << '\n';
				stk.pop();
			}
		}
		else if (s == "empty") {  //empty
			cout << stk.empty() << '\n';
		}
		else if (s == "top") {  //top
			if (stk.empty() == true) {
				cout << -1 << '\n';
			}
			else
				cout << stk.top() << '\n';
		}
		else if (s == "size") {  //size
			cout << stk.size() << '\n';
		}
	}
	return 0;
}

 

 

2. 직접 함수들을 구현하여 풀이

 

💻구현해야할 것

 

  0. 전역변수

int stk[10001];  //정수를 저장할 스택 크기
int stksize = 0;  //스택 크기

 1. push 함수

스택에 정수 num 을 넣는 역할을 한다.

void push(int num)
{
	stk[stksize++] = num;  //스택에 정수 삽입, 스택 크기 1증가
}

 

  2. pop 함수

스택에서 가장 위에 있는 정수를 빼고 그 수를 출력한다.

만약에 스택이 비어있는 경우에는 -1을 출력한다.

 

int pop()
{
	if (empty())
		return -1;  //비어있는 경우에 -1 출력
	stksize--;  //스택크기 1 감소
	return stk[stksize];  //젤 위에 있는 원소 출력
}

3. size 함수

스택에 들어있는 정수의 개수, 즉 스택의 크기 출력

int size()
{
	return stksize;
}

4. empty 함수

스택이 비어있으면 1 출력

아니면 0 출력

int empty()
{
	if (stksize == 0)
		return 1;
	else
		return 0;
}

5. top 함수

스택의 가장 위에 있는 정수 출력

스택이 비어있으면 -1 출력

int top()
{
	if (empty())
		return -1;
	else
		return stk[stksize-1];  //스택의 가장 위에 있는 정수 출력
}

 

전체코드

#include<iostream>
#include<string>
using namespace std;

int stk[10001];
int stksize = 0;

void push(int num)
{
	stk[stksize++] = num;
}

int empty()
{
	if (stksize == 0)
		return 1;
	else
		return 0;
}

int pop()
{
	if (empty())
		return -1;
	stksize--;
	return stk[stksize];
}

int top()
{
	if (empty())
		return -1;
	else
		return stk[stksize-1];
}

int size()
{
	return stksize;
}

int main()
{
	int t, num;
	cin >> t;

	for (int i = 0; i < t; i++) {
		string s;
		cin >> s;

		if (s == "push") {
			cin >> num;
			push(num);
		}
		else if (s == "pop") {
			cout << pop() << '\n';
		}
		else if (s == "empty") {
			cout << empty() << '\n';
		}
		else if (s == "top") {
			cout << top() << '\n';
		}
		else if (s == "size") {
			cout << size() << '\n';
		}
	}
	return 0;
}
728x90
728x90