알고리즘
[백준] 15828 Router 자바 풀이
최슬슬
2021. 3. 18. 13:49
※ 사용언어 : JAVA ※
▼ 문제 링크 ▼
고려 사항
1. 버퍼가 수용할 수 있는 패킷의 양은 정해져 있다 (즉, 버퍼의 크기가 존재함) 2. 버퍼가 가득 찼을 때 패킷이 들어오면 해당 패킷은 버려진다. 3. 버퍼는 선입선출 구조로 들어온 순서대로 패킷을 처리한다 4. 입력값 0 = 버퍼에 있는 패킷을 처리함 / 입력값 -1 : 입력 종료 / 그 외 입력값 : 패킷 |
문제풀이 (With JAVA)
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.LinkedList;
import java.util.Queue;
public class _15828 {
public static void main(String[] args) throws IOException {
BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
int que_size= Integer.parseInt(br.readLine());
int check=0;
Queue<Integer> queue=new LinkedList<>();
while(check!=-1){
check=Integer.parseInt(br.readLine());
if(check==0){
queue.poll();
}
else{
if(check>0 && queue.size()<que_size) {
queue.offer(check);
}
}
}
if(queue.isEmpty()){
System.out.println("empty");
}
else{
while (!queue.isEmpty()){
System.out.print(queue.poll()+" ");
}
}
}
}
◇ check라는 변수에 입력값을 받고, check가 종료 조건인 -1을 입력받기 전까지 while문을 돌림
◇ check=0이면, 라우터가 버퍼에 있는 일을 처리했음으로 queue(버퍼)에서 패킷을 꺼낸다.
◇ check!=0이면, check값이 0보다 큰지 검사한다.
▶ check=-1 인 경우, while문 조건은 while문이 돌아가고 난 뒤에 검사 되기 때문에 0이 아닐 때 queue(버퍼)에 입력값을 집어넣으면 -1도 함께 들어가게 된다.
◇ check>0보다 크면 queue.size()가 que_size(N) 보다 작은지 검사한다
▶ N보다 queue(버퍼)의 크기가 크면, 버퍼가 가득 찬 상황임으로 패킷이 들어갈 수 없는 상황이다.
◇ while문이 종료되면 queue(버퍼)가 비어있는지 확인하고 비어있으면 "empty" 비어있지 않으면 queue가 빌 때까지 while문을 돌려 queue안에 든 패킷을 꺼내 출력한다.