-
큐에 대해 알아보자Knowledge/Data Structure 2019. 9. 5. 18:24반응형
- 큐란?
한쪽 끝에서만 자료를 넣고 다른 한쪽 끝에서만 뺄 수 있는 구조
먼저 넣은 것이 가장 먼저 나오기 때문에 FIFO ( First In First Out) 라고도 한다
- 주로 사용하는 메소드 ( Java )
push, pop, front, back, empty, size가 있다고 하는데 그건 C나 C++ 얘기인 것 같고
자바에서 LinkedList로 큐를 구현했을 경우는
- isEmpty() : 비어있는지 확인
- offer() : 큐의 뒤에 값을 입력한다
- poll() : 큐의 가장 앞에 있는 값을 꺼내고 반환한다
- peek() : 큐의 가장 앞에 있는 값을 확인만 한다
- 구현
이 역시도 백준 큐 구현 문제 ( https://www.acmicpc.net/problem/10845 ) 에 맞춰서 구현한 것임을 미리 알린다
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126import java.io.*;public class Main {private int[] queue;private int begin;private int end;Main() {queue = new int[10000];begin = 0;end = 0;}void push(int data) {queue[end] = data;end++;}boolean empty() {if (begin == end) {return true;} else {return false;}}int size() {return end - begin;}int front() {return queue[begin];}int back() {return queue[end - 1];}int pop() {if (empty()) {return -1;}begin++;return queue[begin - 1];}public static void main(String[] args) throws IOException {BufferedReader br = new BufferedReader(new InputStreamReader(System.in));BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));String nStr = br.readLine();int n = Integer.parseInt(nStr);String input = "";int pushValue = 0;Main queue = new Main();for (int i = 0; i < n; i++) {input = br.readLine();if (input.startsWith("push")) {String[] arr = input.split(" ");pushValue = Integer.parseInt(arr[1]);queue.push(pushValue);} else if (input.startsWith("pop")) {if (queue.empty()) {bw.write(-1 + "\n");} else {bw.write(queue.front() + "\n");queue.pop();}} else if (input.startsWith("size")) {bw.write(queue.size() + "\n");} else if (input.startsWith("empty")) {if (queue.empty()) {bw.write(1 + "\n");} else {bw.write(0 + "\n");}} else if (input.startsWith("front")) {if (queue.empty()) {bw.write(-1 + "\n");} else {bw.write(queue.front() + "\n");}} else if (input.startsWith("back")) {if (queue.empty()) {bw.write(-1 + "\n");} else {bw.write(queue.back() + "\n");}}}br.close();bw.flush();bw.close();// reader와 writer를 닫는다}}반응형'Knowledge > Data Structure' 카테고리의 다른 글
덱에 대해 알아보자 (0) 2019.10.18 스택에 대해 알아보자 (0) 2019.09.04 시간복잡도를 표현하자! Big O 표기법 (0) 2019.09.04