[백준 BOJ] 10866번 덱 (C++/cpp)
2022. 2. 9. 17:38ㆍPS (Program Solving)/BOJ (백준)
문제 설명
https://www.acmicpc.net/problem/10866
접근 방법 - 덱을 이용한 기본 문제
백준의 10866번 문제는 자료 구조 중 덱을 이용한 기본적인 문제이다.
해당 문제는 덱 구조에서 실행 가능한 행위를 모두 갖춘 프로그램을 만들어야 하는 문제이다.
이전에 스택 문제와 큐 문제에 관련하여 작성한 글이 있다. 아래에 링크를 기재해놓으니, 생소하다면 참고해보는 것도 좋을 것이다.
https://smary-it.tistory.com/78
https://smary-it.tistory.com/79
C++에는 위처럼 deque 라이브러리가 따로 존재해서, 필자는 이번에도 이를 이용해 문제를 해결하였다.
필자는 아래처럼 코드를 작성하여 문제를 해결하였다.
덱 구조에 대해 알고 있는 상태라면 쉽게 풀 수 있지만, 그렇지 않다면 아래의 코드를 참고해보길 바란다.
후기
이 문제도 deque 라이브러리를 이용하면 아주 쉽게 풀 수 있는 문제이다.
하지만 위 링크의 문제처럼, 덱 구조에 대해 공부하는 데에 있어선 직접 구현하여 문제를 해결하는 것이 더 올바르다.
따라서, 필자는 덱에 대해 추가적으로 공부를 한 뒤, 다음에는 라이브러리 없이 덱 구조를 직접 구현하여 해당 문제를 다시 풀어보고자 한다.
반응형
성공한 코드
#define _CRT_SECURE_NO_WARNINGS
#pragma warning(disable: 4996)
#include <iostream>
#include <string>
#include <deque>
using namespace std;
//백준 10866번 코드
int main() {
deque<int> d;
int n;
cin >> n;
for (int i = 0; i < n; i++) {
string ch; int num;
cin >> ch;
if (ch == "push_front") {
cin >> num;
d.push_front(num);
}
else if (ch == "push_back") {
cin >> num;
d.push_back(num);
}
else if (ch=="pop_front") {
if (!d.empty()) {
cout << d.front() << endl;
d.pop_front();
}
else { cout << -1 << endl; }
}
else if (ch == "pop_back") {
if (!d.empty()) {
cout << d.back() << endl;
d.pop_back();
}
else { cout << -1 << endl; }
}
else if(ch=="size"){
cout << d.size() << endl;
}
else if (ch == "empty") {
if (d.empty()) { cout << 1 << endl; }
else { cout << 0 << endl; }
}
else if (ch == "front") {
if (!d.empty()) { cout << d.front() << endl; }
else { cout << -1 << endl; }
}
else if (ch == "back") {
if (!d.empty()) { cout << d.back() << endl; }
else { cout << -1 << endl; }
}
}
}
제출 결과
(2022.01.10 백준 10866번 문제 제출 결과)
반응형
'PS (Program Solving) > BOJ (백준)' 카테고리의 다른 글
[백준 BOJ] 10871번 X보다 작은 수 (C언어) (0) | 2022.02.10 |
---|---|
[백준 BOJ] 10869번 사칙연산 (C언어) (0) | 2022.02.10 |
[백준 BOJ] 10845번 큐 (C++/cpp) (0) | 2022.02.09 |
[백준 BOJ] 10828번 스택 (C++/cpp) (0) | 2022.02.09 |
[백준 BOJ] 10820번 문자열 분석 (C++/cpp) (0) | 2022.02.09 |