
💡 데크 (Deque)
👉 양쪽에서 삽입과 삭제가 모두 가능한 자료구조
- Deque : Doubly - ended Queue
- Stack과 Queue를 합친 형태
💡 데크 기본 구조

👉 데크의 기본 구조는 양방향에서 삽입과 삭제가 가능한 구조
👉 일부 기능을 제한하여 용도에 맞게 변형이 가능하다.
- add, remove 는 예외를 발생시켜 예외 처리를 하고, offer, poll의 경우는 null 이나 false 를 반환한다.
- 한 쪽의 입력을 제한한 데크 (Front, Rear 중 한 쪽)
- 한 쪽의 출력을 제한한 데크 (Front, Rear 중 한 쪽)
📖 팰린드롬 (Palindrome) 판별하기 예제
import java.util.ArrayDeque;
import java.util.Deque;
public class Practice2 {
public static boolean checkPalindrome(String str) {
Deque deque = new ArrayDeque();
boolean isPalindrome = true;
for(String s : str.split("")){
deque.addFirst(s);
}
while (!deque.isEmpty()) {
String s1 = (String)deque.pollFirst();
String s2 = (String)deque.pollLast();
if(s1 != null && s2 != null && !s1.equals(s2)){
isPalindrome = false;
break;
}
}
return isPalindrome;
}
public static void main(String[] args) {
System.out.println(checkPalindrome("a"));
System.out.println(checkPalindrome("aba"));
System.out.println(checkPalindrome("abba"));
System.out.println(checkPalindrome("abab"));
System.out.println(checkPalindrome("abcba"));
System.out.println(checkPalindrome("abccba"));
System.out.println(checkPalindrome("madam"));
}
}