| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | 6 | |
| 7 | 8 | 9 | 10 | 11 | 12 | 13 |
| 14 | 15 | 16 | 17 | 18 | 19 | 20 |
| 21 | 22 | 23 | 24 | 25 | 26 | 27 |
| 28 | 29 | 30 |
- unity3dservival
- c#기본문법
- 바킹독
- c#코딩기초트레이닝
- 유니티
- c++ solved.ac
- 티스토리챌린지
- 유니티공부
- unity게임만들기
- unity3d게임만들기
- c++ 백준
- 백준 c++ 공부
- 오블완
- 백준코딩테스트
- c#코테
- 유니티서바이벌게임만들기
- c#기초문법
- solved class 2
- 바킹독알고리즘
- C++
- c#
- 유니티게임만들기
- unity게임
- 리그오브레전드턴제게임
- 백준코테
- 백준
- 백준 C++
- Unity
- C#문법
- 백준 구현문제
- Today
- Total
나 개발자 진짜 되냐?
바킹독 0x07 문제1 / 백준 10866번 덱 본문

12월이올시다.
벌써 25년도가 다 갔네요
작년에는 스파르타를 하고 있었는데 말이죠
한창 최종 플젝한다고 정신없을 때네요..
지금도 정신없는 건 매한가지지만.....
새로운 단원! 덱뒏ㄱ뒉
덱은 사실 dex.... 사실 나는 도적 쪽은 별로 선호 안 하긴 하는데
메랜하면서 전사하니까 부스탯이 dex여서 관심을 조금씩 가졌던 기억이 난다.
덱은 스택과 큐를 합쳐서
위에서도 빼고 넣고 밖에서도 빼고 넣고 하는 친구이다.
그래서 그런지 용어도 좀 더 많고 길다.
구분해 주기 위해서 인 거 같다.
그전에 문법 조금 공부하고 가자!
양쪽 다 들어가지는 친구기 때문에..
deque <int> DQ;
덱 deque.라고 선언
DQ.push_front(n) = 맨 앞에 넣어주기
DQ.push_back(n) = 맨 뒤에 넣어주기
DQ.pop_front() = 맨 앞에 빼주기
DQ.pop_back() = 맨 뒤에 빼주기
DQ.back() = 맨 뒤에 친구
DQ.front() = 맨 앞에 친구
DQ.size() = 크기
DQ.empty() = 비었나요? 안 비었나요? ( T / F )
덱은 또 인덱스를 알면 출력이 가능하다는 사실!
DQ [n] = n번째 값 출력
DQ.insert() = 삽입
DQ.erase() = 삭제
DQ.clear() = 전체 삭제
ex ) 삽입 / 삭제
DQ.insert( DQ.begin()+1,33);
DQ.erase( DQ.begin+3);
오케이
한번 풀어보자.


이런 패턴 계속
스택, 큐에 써서
덱도 쉽게?! 풀긴 했는데
문제를 제대로 안 읽어서 ㅋㅋㅋㅋ
틀렸습니다.. 많이 나와버린..
#include <bits/stdc++.h>
using namespace std;
int main()
{
ios::sync_with_stdio(0);
cin.tie(0);
deque<int> DQ;
int n;
cin >> n;
while (n--)
{
string s;
cin >> s;
if (s == "push_back")
{
int a;
cin >> a;
DQ.push_back(a);
}
else if (s == "push_front")
{
int a;
cin >> a;
DQ.push_front(a);
}
else if (s == "pop_front")
{
if (!DQ.empty())
{
cout << DQ.front() << "\n";
DQ.pop_front();
}
else
cout << -1 << "\n";
}
else if (s == "pop_back")
{
if (!DQ.empty())
{
cout << DQ.back() << "\n";
DQ.pop_back();
}
else
cout << -1 << "\n";
}
else if (s == "front")
{
if (DQ.empty())
cout << -1 << "\n";
else
cout << DQ.front() << "\n";
}
else if (s == "back")
{
if (DQ.empty())
cout << -1 << "\n";
else
cout << DQ.back() << "\n";
}
else if (s == "size")
cout << DQ.size() << "\n";
else if (s == "empty")
{
if (DQ.empty())
cout << 1 << "\n";
else
cout << 0 << "\n";
}
}
}
코드 길이가 길어서 이번에는
캡처가 아니라 코드를 붙여 넣었다.
이 방법도 괜찮을지도?!
pop_front / pop_back의 경우
빼고 나면 이미 무슨 숫자인지 모르기 때문에
front 혹은 back로 출력하고 빼면 된다.!

ㅋㅋㅋㅋ그래도 풀었다! 쉽게!
오늘은 하나 했으니까 칼바람 아수라장 하러 가야지!!
고생했으!
'C++을 시작해봐요! > 알고리즘을 공부해봐요!' 카테고리의 다른 글
| 바킹독 0x09 BFS란? (0) | 2026.05.28 |
|---|---|
| 바킹독 0x07 문제2 / 백준 1021번 회전하는 큐 (0) | 2025.12.05 |
| 바킹독 0x06 문제3 / 백준 2164번 카드2 (0) | 2025.11.25 |
| 바킹독 0x06 문제2 / 백준 18258번 큐2 (0) | 2025.11.21 |
| 바킹독 0x06 문제1 / 백준 10845번 큐 (0) | 2025.11.20 |