๐ŸŒžAlgorithm/๐Ÿ”ฅBaekjoon

[Baekjoon] 14469_์†Œ๊ฐ€ ๊ธธ์„ ๊ฑด๋„ˆ๊ฐ„ ์ด์œ  3

๋ฟŒ์•ผ._. 2024. 1. 2. 16:28

Silver IV

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

< ์†Œ๊ฐ€ ๊ธธ์„ ๊ฑด๋„ˆ๊ฐ„ ์ด์œ  3 >

 

๋ฌธ์ œ ํ’€์ด 

 

์šฐ์„ ์ˆœ์œ„ ํ๋ฅผ ์‚ฌ์šฉํ•ด์„œ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•œ๋‹ค.

 

 my solution (Java)

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Comparator;
import java.util.PriorityQueue;
import java.util.StringTokenizer;

public class _14469_ { // ์†Œ๊ฐ€ ๊ธธ์„ ๊ฑด๋„ˆ๊ฐ„ ์ด์œ  3

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

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

		PriorityQueue<int[]> queue = new PriorityQueue<>(new Comparator<int[]>() {

			@Override
			public int compare(int[] o1, int[] o2) {
				return o1[0] - o2[0];
			}
		});

		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;
		while (!queue.isEmpty()) {
			int temp[] = queue.poll();

			if(temp[0]<=result) {
				result+=temp[1];
			}else {
				result=temp[0]+temp[1];
			}
		}
		System.out.println(result);
	}
}
๋ณ€์ˆ˜)
n : ์–‘์˜ ์ •์ˆ˜
queue : ์šฐ์„ ์ˆœ์œ„ ํ [์†Œ์˜ ๋„์ฐฉ ์‹œ๊ฐ„, ๊ฒ€๋ฌธ ์‹œ๊ฐ„]
result : ๋ชจ๋“  ์†Œ๊ฐ€ ๋†์žฅ์— ์ž…์žฅํ•˜๋Š”๋ฐ ๊ฑธ๋ฆฌ๋Š” ์ตœ์†Œ ์‹œ๊ฐ„

 

์–‘์˜ ์ •์ˆ˜๋งŒํผ ์†Œ์˜ ๋„์ฐฉ ์‹œ๊ฐ„๊ณผ ๊ฒ€๋ฌธ ์‹œ๊ฐ„์„ ์ž…๋ ฅ๋ฐ›์•„ ์šฐ์„ ์ˆœ์œ„ ํ์— ์ €์žฅํ•œ๋‹ค. ๊ทธ ํ›„ ์ฐจ๋ก€๋Œ€๋กœ ์šฐ์„ ์ˆœ์œ„ ํ์—์„œ ๊บผ๋‚ธ๋‹ค. result ๋ณด๋‹ค ์†Œ์˜ ๋„์ฐฉ ์‹œ๊ฐ„์ด ์ ๊ฑฐ๋‚˜ ๊ฐ™๋‹ค๋ฉด ์†Œ๊ฐ€ ๊ฒ€๋ฌธ์„ ๋ฐ›์„ ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ๊ฒ€๋ฌธ ์‹œ๊ฐ„์„ ๋”ํ•ด์ค€๋‹ค. result๋ณด๋‹ค ํฌ๋‹ค๋ฉด ์†Œ๊ฐ€ ๋„์ฐฉํ•  ๋•Œ๊นŒ์ง€ ๊ธฐ๋‹ค๋ ค์•ผ ํ•˜๋ฏ€๋กœ ๊ธฐ๋‹ค๋ ธ๋‹ค๊ฐ€ ๊ฒ€๋ฌธ ์‹œ๊ฐ„๋„ ๋”ํ•ด์ค€๋‹ค.