본문 바로가기
백준

[백준] 15828번 : Router – JAVA [자바]

by Hongwoo 2022. 3. 23.
반응형

 

https://www.acmicpc.net/problem/15828

 

15828번: Router

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

www.acmicpc.net

 


  • 문제


백준 15828번 Router는 큐(Queue)를 이용해서 푸는 문제이다. 큐의 대한 이론을 공부하고 싶으면 밑에 있는 링크를 참고하면 되겠다.

https://propercoding.tistory.com/entry/자료구조-큐Queue

 

[자료구조] 큐(Queue)

목차 큐(Queue)의 개념 큐는 FIFO 선입선출(First In First Out)의 구조를 가진다. 즉, 큐에서는 먼저 들어온 데이터가 가장 먼저 나가는 구조이다. 한 예는 은행에 번호표가 있다. 은행에서 번호표를 먼

propercoding.tistory.com

 

이 문제의 핵심은 큐를 이용하는 것이다. 이 문제에서 주어지는 입력은 세 가지로 나눌 수 있다. 

 

1) 양수

양수가 들어오고 큐의 크기가 버퍼의 크기보다 작으면 양수를 큐에 삽입하고 아니면 넘어간다.

 

2) 0

0이 들어오면 큐에서 데이터 하나를 제거한다.

 

3) -1

-1이 들어오면 for-loop을 종료시키고 큐가 비어있으면 empty를 출력하고 큐가 비어있지 않으면 큐의 내용들을 출력해주면 된다.

 


  • 코드
import java.util.*;
import java.io.*;
public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringBuilder sb = new StringBuilder();
        int size = Integer.parseInt(br.readLine());
        Queue<Integer> q = new LinkedList<>();
        while (true) {
            int num = Integer.parseInt(br.readLine());
            if (num == -1) break;
            if (num == 0) {
                q.remove();
            } else if (size > q.size()) {
                q.add(num);
            }
        }
        if (q.isEmpty()) {
            System.out.print("empty");
        } else {
            for (int i : q) {
                sb.append(i + " ");
            }
            System.out.print(sb);
        }
    }
}

 


  • 후기

그렇게 어렵지 않은 큐 문제였던 거 같다. 이 문제는 큐의 개념을 바로 쓰는 문제여서 큐를 응용해서 푸는 문제를 더 풀어봐야 될 거 같다.

 

반응형

댓글