백준 15828 Router
https://www.acmicpc.net/problem/15828
문제해결
라우터에 입력된 순서대로 버퍼에 추가되고 삭제된다는 것을 통해 큐 자료구조를 이용해야겠다고 생각했다. 만약 버퍼에 공간이 없을 경우 입력은 무시되는데 이는 큐가 꽉 찰 경우 추가하지 않겠다는 의미와 동일하다. 입력값이 0이면 패킷 처리, -1은 종료조건, 그 외의 양수값은 패킷 처리를 의미한다.
- 입력으로 받는 N은 큐의 사이즈이다.
- -1을 입력받으면 종료된다. -> (while sc.nextInt() != -1)
- if 입력받은 값이 0이면 큐에서 제거 / else if 입력받은 값이 양수이면서 현재 큐의 사이즈가 입력으로 받은 N보다 작으면 큐에 추가
- 반복이 끝나고 큐가 비었다면 empty 출력 / 그렇지 않으면 큐에 있는 값 출력
소스코드
import java.util.LinkedList;
import java.util.Queue;
import java.util.Scanner;
public class b15828 {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int n = Integer.parseInt(br.readLine()); // queue size
Queue<Integer> q = new LinkedList<>();
int check = 0; // 종료조건
while (check != -1) {
check = Integer.parseInt(br.readLine());
if (check == 0) {
q.poll();
} else if (check > 0 && q.size() < n) {
q.offer(check);
}
}
if (q.isEmpty()) {
System.out.println("empty");
} else {
while (!q.isEmpty()) {
System.out.print(q.poll() + " ");
}
}
}
}
부족했던 점
- 종료조건임과 동시에 입력받을 값의 변수인 check를 생각하지 못했음
- 현재 큐가 꽉 차서 입력받지 못하는 부분 구현하지 못했음
- Scanner로 입력받았을 경우 1616ms / BufferedReader로 입력받았을 경우 1076ms
Author And Source
이 문제에 관하여(백준 15828 Router), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@im_lily/백준-15828-Router저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)