| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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 |
- 코딩
- OS
- cs
- 오에스
- 컴공과
- 백준
- 자료구조
- 정석
- 브루트포스
- 개발
- coding
- 알고리즘
- DP
- 구현
- Operating System
- c++
- vector
- 너비우선탐색
- 그래프
- 정석학술정보관
- 오퍼레이팅시스템
- 스택
- Computer science
- 코테
- bfs
- 북리뷰
- 컴공
- Stack
- 문제풀이
- 컴퓨터공학과
- Today
- Total
목록Deque (3)
Little Jay
요세푸스 문제가 단순히 Queue만 사용하는 문제라면 이 문제는 Deque를 이용하서 제거된 사람이 M과 일치하면 방향을 반대로 뒤집어서 요세푸스를 수행해야 하기 때문에 Deque 자료구조를 사용해야한다. 요세푸스 문제를 풀었다면 쉽게 해걀할 수 있었던 문제. #include using namespace std; int main() { cin.tie(0); cout.tie(0); ios::sync_with_stdio(false); int n, k, m; deque dq; int counter = 0; cin >> n >> k >> m; bool flag = true; for (int i = 1; i
생각보다 너무 오래 고민했던 문제 처음에는 vector 계속 sort하는 방법을 생각했지만 그러기에는 메모리 제한에 걸릴 것이다. 그래서 검색을 하다가 deque로 하는 방법이 있어서 이 방법을 채택했다. stack과 queue는 일방적으로 뒤, 앞에 있는 원소만 다룰 수 있지만, deque는 앞, 뒤의 원소를 둘 다 다룰 수 있다는 장점이 있다. 그래서 reverse했을 때 계속해서 vector로 reverse sort 해줄 필요 없이 reverse한 것을 체크해서 앞이나 뒤에서부터 원소를 출력해주면 된다. #include #include #include using namespace std; int main() { ios::sync_with_stdio(false); cin.tie(0); cout.tie..
제목 그대로 회전하는 큐이다. 회전하는 큐의 의미를 잘 생각해본다면 자료구조 중 하나인 데큐를 사용하면 편한 문제이다. 푸는 방법은 deque 의 사이즈를 통해서 찾는 것이 효율적이다. temp_index로 숫자를 찾고 size의 반보다 cin한 숫자의 index가 크면 뒤로 pop_back() & push_front() 아니면 pop_front() & push_back()을 하면 된다 #include #include using namespace std; int main() { ios::sync_with_stdio(false); cin.tie(0); cout.tie(0); int n, m, x; cin >> n >> m; int count = 0; deque dq; for (int i = 0; i < n..