๐งจ ์๋ฐ์ .
Deque์ ๊ณต๋ถํ๋ ์ค ๋์ ์ผ๋ก ๋ณํ๋ front์ rear๊ฐ ๊ทผ๋ณธ์ ์ผ๋ก ์ด๋ป๊ฒ ๋์ํ๋์ง ๊ถ๊ธํด์ก์ต๋๋ค.
์ด๊ฒ์ ์๊ฒ๋๋ฉด ์ ํํ๊ฒ Deque์ addFirst, addLast, removeFirst, removeLast ์ front์ rear๊ฐ ์ด๋์ ์์นํ๋์ง ์ ์ ์๊ณ Deque์ ์๋ฆฌ๋ฅผ ์ดํด ํ ์ ์์ ๊ฒ ๊ฐ์์ต๋๋ค.
1๏ธโฃ Deque์ front์ rear์ ์์น๋ ๋ณํ ์ ์๋์? ๐ค
โDeque
โ (Double Ended Queue)์์ โfront
โ ์ โrear
โ ์ ์์น๋ ๋ณํ ์ ์์ต๋๋ค.
โDeque
โ ๋ ์์ชฝ ๋์์ ์ฝ์
๊ณผ ์ญ์ ๊ฐ ๋ชจ๋ ๊ฐ๋ฅํ ์๋ฃ๊ตฌ์กฐ์ด๊ธฐ ๋๋ฌธ์, โfront
โ ์ โrear
โ ์ ์์น๋ ๋ฐ์ดํฐ๊ฐ ์ฝ์
๋๊ฑฐ๋ ์ ๊ฑฐ๋ ๋๋ง๋ค ๋ณํฉ๋๋ค.
2๏ธโฃ Deque์์์ front์ rear์ ๋ณํ. ๐คฉ
1๏ธโฃ ์ฝ์
์ฐ์ฐ (โaddFirst
โ ์ โaddLast
โ)
-
โ
addFirst
โ : ์์๋ฅผ ๋ฑ์ ์์ชฝ์ ์ฝ์ ํฉ๋๋ค.-
โ
front
โ ์์น๊ฐ ๋ฐ๋๋๋ค.
-
โ
-
โ
addLast
โ : ์์๋ฅผ ๋ฑ์ ๋ค์ชฝ์ ์ฝ์ ํฉ๋๋ค.-
โ
rear
โ ์์น๊ฐ ๋ฐ๋๋๋ค.
-
โ
2๏ธโฃ ์ญ์ ์ฐ์ฐ (โremoveFirst
โ ์ โremoveLast
โ)
-
โ
removeFirst
โ : ๋ฑ์ ์์ชฝ์์ ์์๋ฅผ ์ ๊ฑฐํฉ๋๋ค.-
โ
front
โ ์์น๊ฐ ๋ฐ๋๋๋ค.
-
โ
-
โ
removeLast
โ : ๋ฑ์ ๋ค์ชฝ์์ ์์๋ฅผ ์ ๊ฑฐํฉ๋๋ค.-
โ
rear
โ ์์น๊ฐ ๋ฐ๋๋๋ค.
-
โ
3๏ธโฃ ์์ ์ฝ๋.
์๋๋ โDequeโ ์ โLinkedListโ ๊ตฌํ์ ์ฌ์ฉํ์ฌ โfrontโ ์ โrearโ ์ ๋ณํ๋ฅผ ๋ณด์ฌ์ฃผ๋ ์์ ์ฝ๋์ ๋๋ค.
import java.util.Deque;
import java.util.LinkedList;
public class DequeExample {
public static void main(String[] args) {
Deque<String> deque = new LinkedList<>();
// ์์๋ฅผ ๋ฑ์ ์๊ณผ ๋ค์ ์ถ๊ฐ
deque.addFirst("A"); // front: A
deque.addLast("B"); // rear: B
deque.addFirst("C"); // front: C, rear: B
deque.addLast("D"); // rear: D
System.out.println("Initial Deque: " + deque); // ์ถ๋ ฅ : [C,A,B,D]
// ์์ชฝ์์ ์์ ์ ๊ฑฐ
System.out.println("Removed from front: " + deque.removeFirst()); // ์ถ๋ ฅ: C
// ๋ค์ชฝ์์ ์์ ์ ๊ฑฐ
System.out.println("Removed from rear: " + deque.removeLast()); // ์ถ๋ ฅ: D
System.out.println("Deque after removals: " + deque); // ์ถ๋ ฅ: [A, B]
// ๋ฑ์ ์์ชฝ๊ณผ ๋ค์ชฝ์์ ์์ ํ์ธ
System.out.println("Front element: " + deque.getFirst()); // ์ถ๋ ฅ: A
System.out.println("Rear element: " + deque.getLast()); // ์ถ๋ ฅ: B
}
}
๐ ์ค๋ช .
1๏ธโฃ ์ฝ์ ์ฐ์ฐ.
-
โdeque.addFirst(โAโ)โ : โAโ๋ฅผ ๋ฑ์ ์์ ์ฝ์ ํฉ๋๋ค.
-
โdeque.addLast(โBโ)โ : โBโ๋ฅผ ๋ฑ์ ๋ค์ ์ฝ์ ํฉ๋๋ค.
-
โdeque.addFirst(โCโ)โ : โCโ๋ฅผ ๋ฑ์ ์์ ์ฝ์ ํฉ๋๋ค.
-
โdeque.addLast(โDโ)โ : โDโ๋ฅผ ๋ฑ์ ๋ค์ ์ฝ์ ํฉ๋๋ค.
์ด ์ฐ์ฐ๋ค์ โfrontโ ์ โrearโ ์ ์์น๋ฅผ ์ ๋ฐ์ดํธํฉ๋๋ค.
2๏ธโฃ ์ญ์ ์ฐ์ฐ.
-
โdeque.removeFirst()โ : ๋ฑ์ ์์ชฝ์์ โCโ๋ฅผ ์ ๊ฑฐํฉ๋๋ค.
-
โdeque.removeLast()โ : ๋ฑ์ ๋ค์ชฝ์์ โDโ๋ฅผ ์ ๊ฑฐํฉ๋๋ค.
์ด ์ฐ์ฐ๋ค์ โfrontโ ์ โrearโ ์ ์์น๋ฅผ ๋ค์ ์ ๋ฐ์ดํธํฉ๋๋ค.
3๏ธโฃ ์์ ํ์ธ.
-
โdeque.getFirst()โ : ๋ฑ์ ์์ชฝ ์์๋ฅผ ํ์ธํฉ๋๋ค.
-
โdeque.getLast()โ : ๋ฑ์ ๋ค์ชฝ ์์๋ฅผ ํ์ธํฉ๋๋ค.
์ด ์์ ์ฝ๋๋ โfrontโ ์ โrearโ ๊ฐ ๋ฐ์ดํฐ์ ์ฝ์ ๋ฐ ์ญ์ ์ฐ์ฐ์ ๋ฐ๋ผ ์ด๋ป๊ฒ ๋ณํ๋์ง ์ ๋ณด์ฌ์ค๋๋ค.
โDequeโ ๋ ์ด์ฒ๋ผ ์์ชฝ ๋์์์ ์ฝ์ ๊ณผ ์ญ์ ์ฐ์ฐ์ ์ง์ํ๋ฏ๋ก, โfrontโ ์ โrearโ ์ ์์น๋ ๋์ ์ ๋๋ค.