[백준 BOJ] 10828번 스택 (C++/cpp)
2022. 2. 9. 15:48ㆍPS (Program Solving)/BOJ (백준)
문제 설명
https://www.acmicpc.net/problem/10828
접근 방법 - 스택을 이용한 기본 문제
백준의 10828번 문제는 자료 구조 중 스택을 이용한 기본적인 문제이다.
해당 문제는 스택 구조에서 실행 가능한 행위를 모두 갖춘 프로그램을 만들어야 하는 문제이다.
C++에는 stack 라이브러리가 따로 존재해서, 필자는 이를 이용해 문제를 해결하였다.
스택을 직접 구현해서 해결하는 방법도 있지만, 필자는 stack 라이브러리를 직접 이용해 보고자 이 방법을 사용하였다.
필자는 아래처럼 코드를 작성하여 문제를 해결하였다.
스택의 구조에 대해 알고 있는 상태면 쉽게 풀 수 있지만, 그렇지 않다면 아래의 코드를 참고해보길 바란다.
후기
stack 라이브러리를 이용하면 해당 문제는 아주 손쉽게 풀 수 있는 문제이다.
하지만 위에서 작성해놓은 대로 스택을 직접 구현하여 해결하는 방법도 존재한다.
심지어, 스택을 공부하는 데에는 직접 구현하여 문제를 해결하는 것이 더 올바른 방향이기도 하다.
따라서 필자는 스택에 대하여 추가적으로 공부를 한 뒤, 다음에는 라이브러리 없이 스택 구조를 직접 구현하여 해당 문제를 다시 풀어보고자 한다.
반응형
성공한 코드
#define _CRT_SECURE_NO_WARNINGS
#pragma warning(disable: 4996)
#include <iostream>
#include <stack>
#include <string>
using namespace std;
//백준 10828번 코드
int main() {
ios::sync_with_stdio(false);
cin.tie(NULL); cout.tie(NULL); //시간초과로 추가함
stack<int> s;
int n;
cin >> n;
for (int i = 0; i < n; i++) {
string c;
cin >> c;
if (c == "push") {
int num; cin >> num;
s.push(num);
}
else if (c == "pop") {
if (s.empty()) { cout << "-1\n"; }
else {
cout << s.top() << "\n";
s.pop();
}
}
else if (c == "top") {
if (s.empty()) { cout << "-1\n"; }
else {
cout << s.top() << "\n";
}
}
else if (c == "size") {
cout << s.size() << "\n";
}
else if (c == "empty") {
if (s.empty()) { cout << "1\n"; }
else { cout << "0\n"; }
}
}
}
제출 결과
(2021.12.31 백준 10828번 문제 제출 결과)
반응형
'PS (Program Solving) > BOJ (백준)' 카테고리의 다른 글
[백준 BOJ] 10866번 덱 (C++/cpp) (0) | 2022.02.09 |
---|---|
[백준 BOJ] 10845번 큐 (C++/cpp) (0) | 2022.02.09 |
[백준 BOJ] 10820번 문자열 분석 (C++/cpp) (0) | 2022.02.09 |
[백준 BOJ] 10818번 최소, 최대 (C언어) (0) | 2022.02.06 |
[백준 BOJ] 10809번 알파벳 찾기 (C언어) (0) | 2022.02.06 |