포슀트

πŸŒ“ Queue

πŸ’« @TODO


ν•œμͺ½ λμ—μ„œ μ›μ†Œλ₯Ό λ„£κ³ , λ°˜λŒ€μͺ½ λμ—μ„œ μ›μ†Œλ₯Ό λΊ„ 수 μžˆλŠ” ꡬ쑰
FIFO First in First out

Restricted Structure
νŠΉμ • μœ„μΉ˜μ—μ„œλ§Œ μ›μ†Œλ₯Ό λ„£κ±°λ‚˜ λΊ„ 수 μžˆλŠ” μ œν•œλœ 자료ꡬ쑰 (μŠ€νƒ, 큐, 덱)

λŒ€κΈ° ν–‰λ ¬

  • μ„±μ§ˆ
    • μ›μ†Œ μΆ”κ°€ O(1)
    • μ›μ†Œ 제거 O(1)
    • 제일 μ•ž/λ’€ μ›μ†Œ 확인 O(1)
    • 제일 μ•ž/λ’€κ°€ μ•„λ‹Œ λ‚˜λ¨Έμ§€ μ›μ†Œλ“€μ˜ 확인/변경이 β€˜μ›μΉ™μ μœΌλ‘œβ€™ λΆˆκ°€λŠ₯

μΆ”κ°€λ˜λŠ” μͺ½μ„ rear λ’€μͺ½
μ œκ±°λ˜λŠ” μͺ½μ„ front μ•žμͺ½

λ§ˆμ°¬κ°€μ§€λ‘œ μ—°κ²°λ¦¬μŠ€νŠΈλ³΄λ‹€ λ°°μ—΄ κ΅¬ν˜„μ΄ 더 쉬움

μ›ν˜• 큐

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
const int MAX = 1000005;
int dat[MAX];
int head = 0, tail = 0;

void push(int x)
{
	dat[tail++] = x;
}

void pop()
{
	head++;
}

int front()
{
	return dat[head];
}

int back()
{
	return dat[tail-1];
}

int size()
{
	return tail - head;
}

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <bits/stdc++.h>
using namespace std;

int main(void)
{
	queue<int> Q;
	Q.push(10); // 10
	Q.push(20); // 10 20
	Q.push(30); // 10 20 30
	cout << Q.size() << '\n'; // 3
	if(Q.empty()) cout << "Q is empty\n";
	else cout << "Q is not empty\n"; // Q is not empty
	Q.pop(); // 20 30
	cout << Q.front() << '\n'; // 20
	cout << Q.back() << '\n'; // 30
	Q.push(40); // 20 30 40
	Q.pop(); // 30 40
	cout << Q.front() << '\n'; // 30
}

BFS
Flood Fill

λ‘˜ λ‹€ 단골 문제


🫧


이 κΈ°μ‚¬λŠ” μ €μž‘κΆŒμžμ˜ CC BY 4.0 λΌμ΄μ„ΌμŠ€λ₯Ό λ”°λ¦…λ‹ˆλ‹€.