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

2022. 6. 26. 15:37·Algorithm/백준 & 프로그래머스
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

'Algorithm > 백준 & 프로그래머스' 카테고리의 다른 글

[백준]10952번 A+B -5 c/c++  (1) 2022.06.27
[백준]11721번 열 개씩 끊어 출력하기 c/c++  (1) 2022.06.27
[백준]10808번 알파벳 개수 c/c++  (0) 2022.06.25
[백준]1292번 쉽게 푸는 문제 c/c++  (0) 2022.06.25
[백준]2693번 N번째 큰 수 c/c++  (0) 2022.06.25
'Algorithm/백준 & 프로그래머스' 카테고리의 다른 글
  • [백준]10952번 A+B -5 c/c++
  • [백준]11721번 열 개씩 끊어 출력하기 c/c++
  • [백준]10808번 알파벳 개수 c/c++
  • [백준]1292번 쉽게 푸는 문제 c/c++
성장하고픈개발자
성장하고픈개발자
방학 기념 개발블로그 작성하기
    반응형
  • 성장하고픈개발자
    꾸준히하자아자
    성장하고픈개발자
  • 전체
    오늘
    어제
    • 분류 전체보기 (66) N
      • 독일 (1) N
      • Algorithm (45)
        • 백준 & 프로그래머스 (40)
        • 알고리즘 (5)
      • 프로젝트 (5)
        • 카카오 쇼핑하기 web (4)
        • 요약쏙 (0)
      • Web (6)
        • 네트워크 (1)
        • Spring (4)
        • JPA (0)
        • HTTP (1)
      • 후기 (3)
      • SSAFY 일상 (6)
      • 취준 (0)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
    • 깃허브
  • 링크

    • github
  • 공지사항

  • 인기 글

  • 태그

    SSAFY
    BOJ
    Spring Data JPA
    테어민
    PS
    싸피
    쉬운딥러닝
    그리디
    딥러닝
    FNN
    비자
    testing
    백준
    일상
    싸피 13기
    네이버데이터센터각
    DP
    C++
    회고
    합격수기
    스택
    알고리즘
    Andrew Ng
    백엔드
    web
    코딩
    Spring
    책리뷰
    정렬
    SpringBoot
  • 최근 댓글

  • 최근 글

  • 250x250
  • hELLO· Designed By정상우.v4.10.1
성장하고픈개발자
[백준]10828번 스택 c/c++
상단으로

티스토리툴바