[BOJ알고리즘, C++]#2164_카드 2
BOJ 알고리즘 문제 풀이, 2164번 카드 2 문제
queue 컨테이너를 활용하는 방법에 대해 알아보겠습니다.
Overview
- 문제
- 풀이
- 코드
#0. 문제
1. 문제
#1. 풀이
1. 큐
- 큐는 선입선출(FIFO) 방식으로 동작하는 선형 자료구조입니다. 데이터 목록의 한쪽 끝에서는 데이터의 삽입만 이루어지며, 다른 한쪽은 데이터의 삭제 작업만 이루어집니다.
- 데이터 목록의 한쪽에서만(top) 접근이 가능한 스택과 달리, 큐는 데이터 목록의 양쪽 끝(front, back)에서 접근이 가능합니다.
- 삽입/제거의 위치와 방법이 제한된 유한 순차 리스트라는 점에서 스택과 동일하지만, 큐는 스택과 달리 push 한 데이터와 pop 한 데이터가 다릅니다!
- 큐는 그래프 자료구조의 BFS(너비 우선 탐색)에 활용되며, 작업들을 순차적으로 처리하거나, 멀티 스레드 환경에서 동기화를 위한 버퍼로 활용됩니다.
2. queue 컨테이너
#include <iostream>
#include <queue>
using namespace std;
int main() {
queue<int> q;
// 큐에 데이터 삽입
q.push(1);
q.push(2);
q.push(3);
// 큐의 맨 앞 데이터 제거
q.pop();
// 큐의 맨 앞 데이터 출력
cout << "Front element of the queue: " << q.front() << endl;
// 큐의 맨 뒤 데이터 출력
cout << "Back element of the queue: " << q.back() << endl;
// 큐의 크기 출력
cout << "Size of the queue: " << q.size() << endl;
return 0;
}
Details
- C++의 STL이 제공하는 queue 컨테이너의 삽입 방법은 push입니다.
- C++의 STL이 제공하는 queue 컨테이너의 제거 방법은 pop입니다.
- C++의 STL이 제공하는 queue 컨테이너의 접근 방법은 front(), 그리고 back()입니다.
#2. 코드
1. 코드
#include <iostream>
#include <queue>
using namespace std;
int main()
{
ios_base::sync_with_stdio(false);cin.tie(0);cout.tie(0);
int N;
queue<int> q;
cin >> N;
for(int i=1; i<=N; i++)
{
q.push(i);
}
int cnt = 0;
while(q.size() > 1)
{
if(cnt%2 == 0)
{
q.pop();
}
else if(cnt%2 == 1)
{
q.push(q.front());
q.pop();
}
cnt++;
}
cout << q.front();
}
'문제 풀이 > BOJ 문제 풀이' 카테고리의 다른 글
[BOJ알고리즘, C++]#1021_회전하는 큐, 선형 자료구조, 덱 (0) | 2023.06.16 |
---|---|
[BOJ알고리즘, C++]#11866_요세푸스 문제0, 선형 자료구조, 큐 (0) | 2023.06.06 |
[BOJ알고리즘, C++]#7785_회사에 있는 사람, 연결 자료구조, Set 컨테이너 활용 (0) | 2023.06.06 |
[BOJ알고리즘, C++]#1874_스택 수열, 선형 자료구조, 스택 (0) | 2023.06.01 |
[BOJ알고리즘, C++]#1676_팩토리얼의 0의 개수, 소인수분해 (0) | 2022.12.13 |