
난이도: ★☆☆☆☆ • solved on: 2025-11-21

자료구조
ArrayDeque의 push/pop 사용ArrayDeque의 add/poll 사용알고리즘/기법
핵심 키워드
- 문제 분해
- 문자열의 각 문자를 stack과 queue에 각각 push/enqueue 한다.
- stack은 뒤에서부터, queue는 앞에서부터 문자를 꺼내므로
두 자료구조에서 나온 문자를 매번 비교하면 palindrome 여부를 판단할 수 있다.
핵심 로직 흐름
for each char in s: pushCharacter(c) // stack.push enqueueCharacter(c) // queue.add repeat n/2: if popCharacter() != dequeueCharacter(): not palindrome예외 처리
- 문자열 길이가 1 또는 0인 경우 무조건 palindrome 처리 (하지만 이번 문제에서는 생각할 필요가 없었다)
public class Solution {
// Write your code here.
public Deque<Character> stack;
public Queue<Character> queue;
public Solution(){
this.stack = new ArrayDeque<>();
this.queue = new ArrayDeque<>();
}
public void pushCharacter(char ch){
stack.push(ch);
}
public void enqueueCharacter(char ch){
queue.add(ch);
}
public char popCharacter(){
return stack.pop();
}
public char dequeueCharacter(){
return queue.poll();
}
}
Stack 클래스가 있지만 오래된 동기화 기반 클래스이며 성능이 떨어지기 때문에,Stack을 거의 사용하지 않고, ArrayDeque로 충분히 stack 동작을 구현한다.ArrayDeque는 동기화가 없어 Stack보다 성능이 좋고, LinkedList보다 메모리 사용도 효율적이다.LinkedList보다 ArrayDeque가 더 빠르다.Deque로 한번에 처리 가능하다는게 참 아이러니하다.비슷한 유형 (GPT 추천):
확장 문제 (GPT 추천):