algorithm

(230619) Queue

hjkeeeem 2024. 9. 3. 01:45

Queue

- 자료가 일렬로 놓인 선형 자료구조

- 제일 먼저 추가된 자료가 먼저 나오는 선입선출 자료구조 (FIFO, First In First Out)

public class MyQueue {
    private final int[] arr = new int[4];
    // Queue에서 데이터 꺼내는 위치
    private int front = -1;
    // Queue에 데이터를 추가하는 위치
    private int rear = -1;

    public MyQueue() {}

    // 데이터 추가
    public void enQueue(int x){
        // rear + 1이 배열의 크기만해질 때
        if(rear == arr.length-1){
            throw new RuntimeException(" queue is full ! ");
        }
        // rear를 하나 증가시킨다.
        rear++;
        // arr[rear]에 data를 할당한다.
        arr[rear] = x;
    }
    // 데이터 회수
    public int deQueue() {
        // front == rear 일 때 , 큐가 비어있음
        if(front == rear){
            throw new RuntimeException(" queue is empty ! ");
        }
        // front를 하나 증가시킨다.
        front++;
        // arr[front]의 값을 반환한다.
        return arr[front];
    }

    // 큐가 비어있는 지 확인
    public boolean isEmpty(){
        return front == rear;
    }
    
    // 다음에 나올 데이터가 무엇인지 확인 (queue에서 빼내지 않음)
    public int peek() {
        if(isEmpty()){
            throw new RuntimeException("queue is empty");
        }
        // 비어있지 않다면 front + 1 의 값 반환
        return arr[front + 1];
    }
}

 

 

Http

 

Logger 변수를 생성해주는 @Slf4j 어노테이션 (Lombok)

import lombok.extern.slf4j.Slf4j;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

@Slf4j // log 변수를 생성해주는 어노테이션. sout 대신에 사용
//System.out.println(); -> logger.info(); , logger.warn();
public class MappingController {
    private static final Logger logger = LoggerFactory.getLogger(MappingController.class);
}

 

 

arrayList는 [0]을 계속 변경하며 유지하려 노력하니까 많은 시간이 쓰일 수 밖에 없다.

중간에 끼어들지 않을 거라면 추가 삭제 정도는 링크드리스트를 써도 성능이 훨씬 더 좋을 수 있다,