๐ŸŒžAlgorithm/๐Ÿ”ฅBaekjoon

[Baekjoon] 11971_์†๋„ ์œ„๋ฐ˜

๋ฟŒ์•ผ._. 2024. 6. 7. 11:36

Silver V

๋ฌธ์ œ(์ถœ์ฒ˜: https://www.acmicpc.net/problem/11971)

< ์†๋„์œ„๋ฐ˜ >

 

๋ฌธ์ œ ํ’€์ด 

 

๋„๋กœ์˜ ๊ตฌ๊ฐ„๊ณผ ์ œํ•œ์†๋„์™€ ์—ฐ์ •์ด๊ฐ€ ๋‹ฌ๋ฆฐ ๊ตฌ๊ฐ„๊ณผ ๋„๋กœ ๊ตฌ๊ฐ„์„ ๋น„๊ตํ•˜์—ฌ ์†๋„์œ„๋ฐ˜์„ ์ฐพ๋Š”๋‹ค.

 

 my solution (Java)

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.LinkedList;
import java.util.Queue;
import java.util.StringTokenizer;

public class _11971_ { // ์†๋„ ์œ„๋ฐ˜

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

		int n = Integer.parseInt(st.nextToken());
		int m = Integer.parseInt(st.nextToken());

		Queue<int[]> queue = new LinkedList<>();
		for (int i = 0; i < n; i++) {
			st = new StringTokenizer(bf.readLine());
			queue.add(new int[] { Integer.parseInt(st.nextToken()), Integer.parseInt(st.nextToken()) });
		}

		int result = 0;
		for (int i = 0; i < m; i++) {
			st = new StringTokenizer(bf.readLine());

			int d = Integer.parseInt(st.nextToken());
			int s = Integer.parseInt(st.nextToken());

			while (d > 0) {
				if (queue.peek()[1] < s) {
					result = Math.max(result, s - queue.peek()[1]);
				}
				if (queue.peek()[0] > d) {
					queue.peek()[0] -= d;
					break;
				} else {
					d -= queue.poll()[0];
				}
			}
		}
		System.out.println(result);
	}
}
๋ณ€์ˆ˜)
n, m : ๋„๋กœ ๊ตฌ๊ฐ„ ์ˆ˜, ๋‹ฌ๋ฆฐ ๊ตฌ๊ฐ„ ์ˆ˜
queue : Queue <int []>
result : ์†๋„ ์œ„๋ฐ˜ํ•œ ์ตœ๋Œ“๊ฐ’
d, s : ๋‹ฌ๋ฆฐ ๊ตฌ๊ฐ„์˜ ๊ธธ์ด, ํ•ด๋‹น ๊ตฌ๊ฐ„์—์„œ ๋‹ฌ๋ฆฐ ์†๋„

 

๋„๋กœ ๊ตฌ๊ฐ„ ์ˆ˜์™€ ๋‹ฌ๋ฆฐ ๊ตฌ๊ฐ„ ์ˆ˜๋ฅผ ์ž…๋ ฅ๋ฐ›๋Š”๋‹ค. ๋„๋กœ ๊ตฌ๊ฐ„ ๊ธธ์ด์™€ ํ•ด๋‹น ๊ตฌ๊ฐ„์˜ ์ œํ•œ ์†๋„๋ฅผ ์ž…๋ ฅ๋ฐ›์•„ queue์— ์ €์žฅํ•œ๋‹ค. ๋‹ฌ๋ฆฐ ๊ตฌ๊ฐ„ ๊ธธ์ด์™€ ํ•ด๋‹น ๊ตฌ๊ฐ„์—์„œ ๋‹ฌ๋ฆฐ ์†๋„๋ฅผ ์ž…๋ ฅ๋ฐ›์•„ ๋‹ฌ๋ฆฐ ๊ตฌ๊ฐ„์˜ ๊ธธ์ด๊ฐ€ 0๋ณด๋‹ค ํด ๋•Œ ๋‹ค์Œ ๊ณผ์ •์„ ๊ณ„์†ํ•ด์„œ ๋ฐ˜๋ณตํ•œ๋‹ค.

 

1) queue์˜ peek ๊ฐ’์˜ ์ œํ•œ์†๋„๊ฐ€ ๋‹ฌ๋ฆฐ ์†๋„๋ณด๋‹ค ์ž‘๋‹ค๋ฉด ์†๋„ ์œ„๋ฐ˜ํ•œ ๊ฒƒ์ด๋ฏ€๋กœ result๋ฅผ ์—…๋ฐ์ดํŠธํ•œ๋‹ค.

2) queue์˜ peek ๊ฐ’์˜ ๋„๋กœ ๊ตฌ๊ฐ„์ด ๋‹ฌ๋ฆฐ ๊ตฌ๊ฐ„ ๊ธธ์ด๋ณด๋‹ค ํฌ๋‹ค๋ฉด ๋‹ฌ๋ฆฐ ๊ตฌ๊ฐ„๋งŒํผ ๊ฐ’์„ ๋นผ์ค€ ํ›„ ๋‹ค์Œ ๋‹ฌ๋ฆฐ ๊ตฌ๊ฐ„์„ ์ž…๋ ฅ๋ฐ›๊ธฐ ์œ„ํ•ด ์ข…๋ฃŒํ•œ๋‹ค.

3) queue์˜ peek ๊ฐ’์˜ ๋„๋กœ ๊ตฌ๊ฐ„์ด ๋‹ฌ๋ฆฐ ๊ตฌ๊ฐ„ ๊ธธ์ด๋ณด๋‹ค ์ž‘๋‹ค๋ฉด ๋‹ฌ๋ฆฐ ๊ตฌ๊ฐ„ ๊ธธ์ด์—์„œ queue์—์„œ poll ํ•œ ๊ฐ’์˜ ๋„๋กœ ๊ตฌ๊ฐ„์„ ๋นผ์ค€๋‹ค.

 

์ตœ์ข… ์†๋„ ์œ„๋ฐ˜ํ•œ ์ตœ๋Œ“๊ฐ’์ธ result๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค.