ํ•ด๋ฒ„๋‹ˆ 2023. 11. 21. 09:44
๋ฐ˜์‘ํ˜•

 

๋ฑ(Deque)์ด๋ž€? 

์–‘์ชฝ ๋์—์„œ ์‚ฝ์ž…๊ณผ ์‚ญ์ œ๊ฐ€ ๊ฐ€๋Šฅํ•œ ์ž๋ฃŒ๊ตฌ์กฐ์ด๋‹ค. 

์„ ์ž…์„ ์ถœ(FIFO), ํ›„์ž…์„ ์ถœ(LIFO) ๊ฐœ๋…์ด ๋ชจ๋‘ ์ ์šฉ์ด ๋˜๋Š” ์ž๋ฃŒ๊ตฌ์กฐ์ด๋‹ค. 

Java์—์„œ Deque์€ java.util.Deque ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์ด์šฉํ•ด ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ๋‹ค. 

 

 

 

 

 

์žฅ์ 

๋ฐ์ดํ„ฐ์˜ ์‚ฝ์ž… & ์‚ญ์ œ๊ฐ€ ๋น ๋ฆ„

ํฌ๊ธฐ๊ฐ€ ๊ฐ€๋ณ€์ ์ž„

๋ฐ์ดํ„ฐ๋ฅผ ์•ž๋’ค์—์„œ ์‚ฝ์ž… & ์‚ญ์ œํ•  ์ˆ˜ ์žˆ์Œ

index๋กœ ์ž„์˜ ์›์†Œ ์ ‘๊ทผ์ด ๊ฐ€๋Šฅํ•จ

 

 

 

 

๋‹จ์ 

deque์˜ ์ค‘๊ฐ„์—์„œ์˜ ์‚ฝ์ž…๊ณผ ์‚ญ์ œ๊ฐ€ ์–ด๋ ต๋‹ค. 

 

 

 

 

 

 

 

 

 

์‚ฌ์šฉ๋ฒ• 

Deque ๊ฐ์ฒด ์ƒ์„ฑ 

//import java.util.Deque;
//import java.util.LinkedList;

Deque<Integer> deque = new LinkedList<>();

 

 

 

์•ž ๋ถ€๋ถ„์— ๊ฐ’ ์ถ”๊ฐ€ํ•˜๊ธฐ 

deque.addFirst(1);
deque.offerFirst(2);

// [2, 1]

 

 

 

๋’ท ๋ถ€๋ถ„์— ๊ฐ’ ์ถ”๊ฐ€ํ•˜๊ธฐ 

deque.addLast(1);
deque.add(2);
deque.offerLast(3);
deque.offer(4);

[1, 2, 3, 4]

 

 

add์™€ offer ๋ฉ”์†Œ๋“œ์˜ ์ฐจ์ด 

add : illegalStateException์„ ๋ฐœ์ƒ์‹œํ‚จ๋‹ค.

offer : ํ๊ฐ€ ๊ฐ€๋“์ฐจ์„œ ๋” ์ด์ƒ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์—†๋Š” ๊ฒฝ์šฐ false๋ฅผ ๋ฐ˜ํ™˜ํ•˜๊ณ , ์š”์†Œ๊ฐ€ ์ถ”๊ฐ€๋˜๋ฉด true๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋ฉฐ ํŠน์ • ์˜ˆ์™ธ๋ฅผ throwํ•˜์ง€ ์•Š๋Š”๋‹ค. 

 

 

 

 

 

์•ž ๋ถ€๋ถ„ ๊ฐ’ ์‚ญ์ œํ•˜๊ธฐ 

for(int i=1;i<=5;i++) {
	deque.offer(i);
}

// [1, 2, 3, 4, 5]

deque.remove();
deque.removeFirst();
deque.pollFirst();
deque.poll();
// [5]

 

 

 

๋’ท ๋ถ€๋ถ„ ๊ฐ’ ์‚ญ์ œํ•˜๊ธฐ

for(int i=1;i<=5;i++) {
	deque.offer(i);
}

// [1, 2, 3, 4, 5]

deque.removeLast();
deque.pollLast();
// [1, 2, 3]

 

 

remove์™€ poll ๋ฉ”์†Œ๋“œ์˜ ์ฐจ์ด

remove : ๋น„์–ด์žˆ์„ ๋•Œ ์‚ญ์ œํ•˜๋ฉด ์˜ˆ์™ธ ๋ฐœ์ƒ

poll : ๋น„์–ด์žˆ์„ ๋•Œ ์‚ญ์ œํ•˜๋ฉด null ๋ฐ˜ํ™˜

 

 

 

 

์•ž ๋ถ€๋ถ„ ๊ฐ’ ๊ฐ€์ ธ์˜ค๊ธฐ (์ฝ๊ธฐ)

for (int i = 1; i <= 5; i++) {
	deque.offer(i);
} 
// [1, 2, 3, 4, 5]

int num1 = deque.getFirst();	// 1
int num2 = deque.peekFirst();	// 1
int num3 = deque.peek();	// 1

 

 

 

๋’ท ๋ถ€๋ถ„ ๊ฐ’ ๊ฐ€์ ธ์˜ค๊ธฐ (์ฝ๊ธฐ) 

for (int i = 1; i <= 5; i++) {
	deque.offer(i);
} 
// [1, 2, 3, 4, 5]

int num1 = deque.getLast();	// 5
int num2 = deque.peekLast();	// 5

 

 

get๊ณผ peek ๋ฉ”์†Œ๋“œ์˜ ์ฐจ์ด 

get : ํ•ด๋‹น ๊ฐ’์„ returnํ•˜๊ณ  ์‹คํŒจ ์‹œ Exception์„ ๋ฐœ์ƒ

peek : ํ•ด๋‹น๊ฐ’์„ returnํ•˜๊ณ  ์‹คํŒจ์‹œ null์„ returnํ•œ๋‹ค. 

 

 

 

 

 

 

 

 

 

 

์ฐธ์กฐ 

https://velog.io/@esun1903/%EC%9E%90%EB%A3%8C%EA%B5%AC%EC%A1%B0-Deque

 

[์ž๋ฃŒ๊ตฌ์กฐ] Deque(๋ฑ,๋ฐํฌ)

์ž๋ฃŒ๊ตฌ์กฐ์˜ ์ข…๋ฅ˜ ์ค‘ ํ•˜๋‚˜์ธ ๋ฑ์— ๋Œ€ํ•ด ์•Œ์•„๋ณด๊ณ , ๋ฌธ์ œ์— ์ ์šฉํ•ด๋ณด์•„์š”. ๐Ÿ‘ฉ๐Ÿป‍๐Ÿ’ป Deque ๐Ÿ“‘ ๋ชฉ์ฐจ โ“Deque ์ •์˜ ๐Ÿ’๐Ÿป‍โ™€๏ธ Deque ๋‚ด์žฅ ํ•จ์ˆ˜ โœจ ๋ฌธ์ œ์— ์ ์šฉํ•ด๋ณด๊ธฐ ์šฐ์„ , ์ด ๋ธ”๋กœ๊ทธ๋ฅผ ๋ณด๋ฉด์„œ ๊ณต๋ถ€

velog.io

https://adjh54.tistory.com/135#4)%20%EB%8D%B1(deque)-1

 

[Java/์ž๋ฃŒ๊ตฌ์กฐ๋ก ] ์„ ํ˜•๊ตฌ์กฐ ์ดํ•ดํ•˜๊ธฐ -1 : ํ(Queue), ์Šคํƒ(Stack), ๋ฑ(Deque)

ํ•ด๋‹น ๊ธ€์—์„œ๋Š” ์ž๋ฃŒ๊ตฌ์กฐ๋ก  ์ค‘ ์„ ํ˜• ๊ตฌ์กฐ์ธ ํ(Queue)์™€ ์Šคํƒ(Stack), ๋ฑ(Deque)์— ๋Œ€ํ•ด์„œ ์ดํ•ดํ•˜๊ณ  ์–ธ์ œ ์‚ฌ์šฉํ•˜๋ฉฐ ๊ฐ๊ฐ์˜ ์žฅ๋‹จ์ ์ด ๋ฌด์—‡์ธ์ง€์— ๋Œ€ํ•ด ์•Œ์•„๋ณด๊ธฐ ์œ„ํ•œ ๊ธ€์ž…๋‹ˆ๋‹ค. 1) ์„ ํ˜• ๊ตฌ์กฐ(Linear Structure

adjh54.tistory.com

 

๋ฐ˜์‘ํ˜•