
- 오늘의 학습 키워드 스택과 큐
- 공부한 내용 본인의 언어로 정리하기
문제의 목적: 큐 구조를 스택 구조로 변경한다.
기본적인 아이디어: 큐는 FIFO 구조 이고
스택은 LIFO 구조여서 큐 2개를 이용해서 queue1에 있는 값을 queue2 에 마지막 하나만 제외하고
이동시킨다.
마지막 하나를 top 메서드를 읽고 topElement를 반환한다.
수도 코드
클래스 MyStack:
큐 queue1, queue2 선언
생성자 MyStack():
queue1을 새 큐로 초기화
queue2를 새 큐로 초기화
함수 push(x):
queue1에 x 추가
함수 pop():
queue1의 크기가 1보다 큰 동안:
queue1에서 요소를 제거하여 queue2에 추가
topElement = queue1에서 요소 제거
queue1과 queue2 교환
topElement 반환
함수 top():
queue1의 크기가 1보다 큰 동안:
queue1에서 요소를 제거하여 queue2에 추가
topElement = queue1의 첫 요소 확인
queue2에 queue1에서 제거한 요소 추가
queue1과 queue2 교환
topElement 반환
함수 empty():
queue1이 비어있으면 true 반환, 아니면 false 반환
- 오늘의 회고
- 어떤 문제가 있었고, 나는 어떤 시도를 했는지
queue1과 queue2를 사용할 때 pop() 메소드에 어떻게 하나만 남기는지 이해를 못했음
①"모든 last 에 들어온게 처음 나가야하는데 queue1 중 하나만 빼고 queue2로 옮기는데 마지막수는 어떻게 남기는지?"
②top에서는 왜 peek() 을 사용할까?
③peek() 과 pop() 의 차이점?
Queue<Integer> temp = queue1;
queue1=queue2;
queue2=temp;
- 어떻게 해결했는지
gpt랑 같이 공부했다.
public int top(){
//queue1에서 마지막 요소를 제외한 모든 요소를 queue2로 이동
while(queue1.size()>1){
queue2.add(queue1.remove());
}
//마지막 요소 (스택의 top)을 제거하고 단하나의 요소 3을 topElement에 반환
int topElement= queue1.remove();
//이시점에 queue1은 완전히 비어있음 queue2에는 나머지 요소들이 있음
//queue1과 queue2를 스왑
Queue<Integer> temp = queue1;
queue1=queue2;
queue2=temp;
return topElement;
}
- 무엇을 새롭게 알았는지
peek() : 요소의 값만 읽고 제거 안한다.
큐에서 요소를 제거하고(queue1.remove()) 그 요소를 queue2에 추가(queue2.add()).
pop() 메소드와의 차이점은, pop()에서는 이 요소를 버린다.
top()에서는 이 요소를 버리지 않고 queue2에 추가해야 하고 맨위 요소값으로 반환
- 내일 학습할 것은 무엇인지
'【스터디노트】 > ▷TIL' 카테고리의 다른 글
99클럽 코테 스터디 7일차 TIL + 오늘의 학습 키워드 스택 (1) | 2025.04.08 |
---|---|
99클럽 코테 스터디 6일차 TIL + 오늘의 학습 키워드 동적 프로그래밍 (0) | 2025.04.07 |
99클럽 코테 스터디 4일차 TIL + 오늘의 학습 키워드: 스택과 큐 (0) | 2025.04.03 |
99클럽 코테 스터디 3일차 TIL + 오늘의 학습 키워드 문자열 (0) | 2025.04.02 |
99클럽 코테 스터디 2일차 TIL + 오늘의 학습 키워드 문자열 (0) | 2025.04.02 |