Queue
: 선입 선출(FIFO: First In First Out)의 성격을 지닌 자료구조
[자료구조] 큐(Queue)에 대한 설명글
[자료구조] 큐(Queue)
큐 (Queue) - 스택과 마찬가지로 삽입과 삭제의 위치가 제한된 유한 순서 리스트 - 선입선출 구조(FIFO, First-In-First-Out) : 삽입 순으로 나열되어 가장 먼저 삽입한 원소가 가장 먼저 삭제된다. 삭제
kwin0825.tistory.com
선언
import java.util.Queue;
import java.util.LinkedList;
Queue<자료형> 변수명 = new LinkedList<>();
ㄴ 위 같은 경우는 자료형에 넣은 자료형만 삽입, 삭제 가능
Queue 변수명 = new LinkedList();
ㄴ 위 같은 경우는 어떤 자료형이든 삽입, 삭제 가능(이전에 int형을 넣었어도 String형 삽입 가능)
메서드 (Method)
Queue<자료형> q = new LinkedList<>();
1. 삽입
q.add(삽입할 value);
ㄴ 반환 값(boolean): 삽입 성공 시 true / 실패 시 Exception발생
q.offer(삽입할 value);
ㄴ 반환 값(boolean): 삽입 성공 시 true / 실패 시 false 반환
2. 삭제
q.remove();
ㄴ 반환 값(삭제된 value의 자료형): 삭제된 value / 공백 큐이면 Exception("NoSuchElementException") 발생
q.remove(삭제할 value);
ㄴ 반환 값(boolean): 큐에 해당 value가 존재하면 해당 값 삭제 후 true / 존재하지 않으면 false 반환
q.poll();
ㄴ 반환 값(삭제된 value의 자료형): 삭제된 value / 공백 큐이면 null 반환
3. 큐의 front에 위치한 value 반환
q.element();
ㄴ 반환 값(큐 head에 위치한 value의 자료형): 큐 head에 위치한 value / 공백 큐이면 Exception("NoSuchElementException") 발생
q.peek();
ㄴ 반환 값(큐 head에 위치한 value의 자료형): 큐 head에 위치한 value / 공백 큐이면 null 반환
4. 큐 초기화(= 공백 큐 만들기)
q.clear();
ㄴ 반환 값(void): X
5. 큐 크기
q.size();
ㄴ 반환 값(int): 큐 사이즈 반환
6. 큐에 해당 원소가 존재하는지?
q.contains(찾을 value);
ㄴ 반환 값(boolean): 해당 값이 존재할 때 true / 해당 값이 없을 때 false 반환
7. 공백 큐인가?
q.isEmpty();
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.LinkedList;
import java.util.Queue;
import java.util.StringTokenizer;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int N = Integer.parseInt(br.readLine());
StringBuilder sb = new StringBuilder();
Queue<Integer> que = new LinkedList<Integer>();
int last = 0;
for(int i = 0; i < N; i++) {
StringTokenizer st = new StringTokenizer(br.readLine());
String S = st.nextToken();
switch(S) {
case "push" :
last = Integer.parseInt(st.nextToken());
que.offer(last);
break;
case "pop" :
if(que.isEmpty()) sb.append(-1).append("\n");
else sb.append(que.poll()).append("\n");
break;
case "size" :
sb.append(que.size()).append("\n");
break;
case "empty" :
if(que.isEmpty()) sb.append(1).append("\n");
else sb.append(0).append("\n");
break;
case "front" :
if(que.isEmpty()) sb.append(-1).append("\n");
else sb.append(que.peek()).append("\n");
break;
case "back" :
if(que.isEmpty()) sb.append(-1).append("\n");
else sb.append(last).append("\n");
break;
}
}
System.out.println(sb);
}
}
'Study > 코딩스터디_TIL' 카테고리의 다른 글
[java] 큐 활용 문제풀이 백준 4949번 균형잡힌 세상 (0) | 2025.02.08 |
---|---|
[java] 큐 활용 문제풀이 백준 26043번 식당메뉴 (0) | 2025.02.06 |
[JAVA 스터디] Stack 과 Queue (0) | 2025.02.04 |
[JAVA 스터디] Stack 개념과 사용법 (0) | 2025.02.03 |
[JAVA 스터디] Map getOrDefault 사용법 (0) | 2025.01.25 |