99클럽 코테 스터디 18일차 TIL + 스택/큐

2024. 11. 14. 15:25Algorithm Problem Solving

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

 

1. 알고리즘! 생각해보자

1) 유형 구분
- 유형 1: queue.add + cnt, number 교체
- 유형 2: queue.poll()

2. 해결 코드

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;
import java.util.StringTokenizer;

public class Main { // 식당 입구 대기 줄

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

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

		Queue<Integer> queue = new LinkedList<>();
		int cnt = 0;
		int num = 100000;

		for (int i = 0; i < n; i++) {
			st = new StringTokenizer(bf.readLine());
			int type = Integer.parseInt(st.nextToken());

			if (type == 1) {
				int temp = Integer.parseInt(st.nextToken());
				queue.add(temp);
				if (queue.size() >= cnt) {
					if (queue.size() == cnt) {
						if (num > temp)
							num = temp;
					} else {
						cnt = queue.size();
						num = temp;
					}
				}
			} else {
				queue.poll();
			}
		}
		bw.write(cnt +" "+num);
		bw.flush();
	}
}

3. 레퍼런스

 

[Baekjoon] 26042_식당 입구 대기 줄

Silver V문제(출처: https://www.acmicpc.net/problem/26042) 문제 풀이  Queue를 사용해서 학생이 대기할 때마다 대기하는 학생 수와 맨 뒤에 줄 서 있는 학생 번호를 비교하여 답을 찾는다.  my solution (Java)im

melody-coding.tistory.com