본문 바로가기
Problem Solving/Baekjoon

[백준] 15828 Router - Data Structure / Java

by graycode 2022. 11. 3.

 문제 링크

 

15828번: Router

인터넷을 사용하기 위해서는 컴퓨터에 인터넷 회선을 연결하거나 Wi-Fi를 연결해야 한다. 이렇게 연결된 네트워크를 통해 컴퓨터에는 통신이 가능하다. 마음에 드는 노래나 동영상이 있는 곳에

www.acmicpc.net

 

 풀이 과정

라우터를 Queue 로 구현하고, 해당 큐에 저장할 수 있는 데이터의 수 n 을 입력받는다.

 

-1 을 입력받을 때까지 패킷의 정보를 입력받으며

입력받은 값이 0일 때 큐를 poll 하여 가장 먼저 들어온 값을 처리한다.

 

그외의 값은 만약 큐의 크기가 n, 즉 라우터의 버퍼보다 작을 경우 여유 공간이 있으므로 해당 값을 offer,

큐의 크기가 n 보다 같거나 클 경우 더 이상 추가로 값을 수용 불가하므로 해당 값을 무시한다.

 

이러한 과정을 거친 후 큐에 값이 없으면 "empty" 를 출력, 값이 존재할 경우 모두 꺼내어 정답으로써 출력한다.

 

• 풀이 코드

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.LinkedList;
import java.util.Queue;

public class Main {

    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));

        int n = Integer.parseInt(br.readLine());

        Queue<Integer> router = new LinkedList<>();
        while (true) {
            int packet = Integer.parseInt(br.readLine());

            if (packet == -1)
                break;

            if (packet == 0)
                router.poll();
            else if (router.size() < n)
                router.offer(packet);
        }

        if (router.isEmpty())
            bw.write("empty");
        else {
            while (!router.isEmpty())
                bw.write(router.poll() + "\n");
        }

        bw.flush();
    }

}

댓글