https://leetcode.com/problems/implement-stack-using-queues/
- 큐를 이용해 다음 연산을 지원하는 스택을 구현하라.
push(x) : 엘리먼트 x를 스택에 삽입한다.
pop() : 스택의 첫 번째 엘리먼트를 삭제한다.
top() : 스택의 첫 번째 엘리먼트를 가져온다.
empty() : 스택이 비어있는지 여부를 리턴한다.
풀이 1) push()할 때 큐를 이용해 재정렬
- 큐를 선언 하고 큐 추상 자료형의 기본 연산으로 구현
- 가장 복잡한 부분은 push()이다.
- 엘리먼트를 삽입한 후에 방금 삽입한 엘리먼트를 맨 앞에 두는 상태로 전체를 재정렬하면 나머지는 기본적인 큐 연산으로 쉽게 구현이 가능하다.
class MyStack {
//큐 변수, 구현체는 LinkedList로 선언
Queue<Integer> queue = new LinkedList<>();
public void push(int x)
{
//엘리먼트 삽입
queue.add(x);
//맨 앞에 두는 상태로 전체 재정렬
for(int i=1; i<queue.size(); i++)
{
queue.add(queue.remove());
}
}
public int pop()
{
//재정렬한 상태이므로 큐 연산으로 추출
return queue.remove();
}
public int top()
{
//재정렬한 상태이므로 큐 연산으로 조회
return queue.peek();
}
public boolean empty()
{
//크기를 비교해 비어 있는지 확인
return queue.size() == 0;
}
}
/**
* Your MyStack object will be instantiated and called as such:
* MyStack obj = new MyStack();
* obj.push(x);
* int param_2 = obj.pop();
* int param_3 = obj.top();
* boolean param_4 = obj.empty();
*/
0밀리초
'Java > 알고리즘' 카테고리의 다른 글
[자바 알고리즘 인터뷰] 9장 스택,큐 (6) 원형 큐 디자인 (0) | 2024.05.10 |
---|---|
[자바 알고리즘 인터뷰] 9장 큐,스택 (5) 스택을 이용한 큐 구현 (0) | 2024.05.10 |
[자바 알고리즘 인터뷰] 9장 스택, 큐 (3) 일일 온도 (0) | 2024.05.10 |
[자바 알고리즘 인터뷰] 9장 스택,큐(2) - 중복 문자 제거 (0) | 2024.05.06 |
[자바 알고리즘 인터뷰] 9장 스택,큐 (1) - 유효한 괄호 (0) | 2024.05.06 |