개발 일지
225. Implement Stack using Queues (큐를 사용하여 스택 구현) 본문
두 개의 대기열만 사용하여 후입선출(LIFO) 스택을 구현합니다. 구현된 스택은 일반 스택의 모든 기능(push, top, pop 및 empty)을 지원해야 합니다.
MyStack 클래스를 구현합니다.
void push(int x) 요소 x를 스택 맨 위로 푸시합니다.
int pop() 스택의 맨 위에 있는 요소를 제거하고 반환합니다.
int top() 스택의 맨 위에 있는 요소를 반환합니다.
boolean empty() 스택이 비어 있으면 true를 반환하고 그렇지 않으면 false를 반환합니다.
노트:
대기열의 표준 작업만 사용해야 합니다. 즉, 뒤로 밀기, 앞에서 보기/팝, 크기 및 비어 있는 작업만 유효합니다.
언어에 따라 대기열이 기본적으로 지원되지 않을 수 있습니다. 대기열의 표준 작업만 사용하는 한 목록 또는 deque(양단 대기열)를 사용하여 대기열을 시뮬레이션할 수 있습니다.
예시 1:
입력:
["MyStack", "push", "push", "top", "pop", "empty"]
[[], [1], [2], [], [], []]
출력:
[null, null, null, 2, 2, false]
설명:
MyStack myStack = new MyStack();
myStack.push(1);
myStack.push(2);
myStack.top(); // 2 반환
myStack.pop(); // 2 반환
myStack.empty(); // 거짓 반환
조건:
- 1 <= x <= 9
- 대부분의 호출은 , , 및 100에 이루어집니다 .pushpoptopempty
- pop및 에 대한 모든 호출이 top유효합니다.
정답:
public class MyStack {
private Queue<int> queue = new Queue<int>();
public MyStack() {
}
public void Push(int x) {
queue.Enqueue(x);
for (int i = 1; i < queue.Count; i++)
{
queue.Enqueue(queue.Dequeue());
}
}
public int Pop() {
return queue.Dequeue();
}
public int Top() {
return queue.Peek();
}
public bool Empty() {
return queue.Count == 0;
}
}
해설:
큐의 길이가 2가 넘어갔을때부터는 Stack의 일을 해줄 수 없기 때문에 제거 후 그 수를 다시 넣어주는 방식을 반복하여 Stack의 일을 해줄 수 있도록 하였습니다.
'코딩 테스트 > LeetCode' 카테고리의 다른 글
2. Add Two Numbers (두 숫자 더하기) (0) | 2023.04.24 |
---|---|
1. Two Sum (두 합) (0) | 2023.04.10 |
14. Longest Common Prefix (가장 긴 공통 접두사) (0) | 2023.03.20 |
13. Roman to Integer (로마에서 정수로) (0) | 2023.02.28 |
953. Verifying an Alien Dictionary (외계인 사전 검증하기) (0) | 2023.02.28 |