
자료구조 : 큐 (LinkedList)
해결방법 : result의 배열을 선언해,
int [] result = {식당에 대기줄 최대값, 동시에 있을 때 가장작은 수 }를 넣기 위해 Integer.MIN_VALUE, Integer.MAX_VALUE 를 활용해 결과값을 비교할 수 있게 만들었다.
문제를 풀고 생각하니[]이 아니라 각각의 변수를 선언해서 하면 되는데, 왜 배열을 생각놨는지 모르겠다.
그래서 첫번 째 입력값이 1일때와 2일 때를 구분해서 문제를 해결 했음.
import java.io.*;
import java.util.LinkedList;
import java.util.StringTokenizer;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int N = Integer.parseInt(br.readLine());
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
LinkedList<Integer> peopleNumber = new LinkedList<>();
int [] result = {Integer.MIN_VALUE, Integer.MAX_VALUE};
for(int i = 0 ; i < N; i++){
StringTokenizer st = new StringTokenizer(br.readLine());
int first = Integer.parseInt(st.nextToken());
if(first == 1) {
int second = Integer.parseInt(st.nextToken());
peopleNumber.add(second);
if(result[0]<=peopleNumber.size()){
if(result[0]==peopleNumber.size()){
if(result[1] > second){
result[1] = second;
}
}else{
result[0] = peopleNumber.size();
result[1] = second;
}
}
}
if(first == 2){
peopleNumber.remove();
}
}
bw.write(result[0] +" "+result[1]);
bw.flush();
bw.close();
}
}