๐ŸŒžAlgorithm/๐Ÿ”ฅBaekjoon

[Baekjoon] 23757_์•„์ด๋“ค๊ณผ ์„ ๋ฌผ ์ƒ์ž

๋ฟŒ์•ผ._. 2023. 7. 18. 12:52

Silver II

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

< ์•„์ด๋“ค๊ณผ ์„ ๋ฌผ ์ƒ์ž >

 

๋ฌธ์ œ ํ’€์ด 

 

์šฐ์„ ์ˆœ์œ„ ํ๋ฅผ ์‚ฌ์šฉํ•ด์„œ ์ƒ์ž์— ์ž์‹ ์ด ์›ํ•˜๋Š” ๊ฒƒ๋ณด๋‹ค ์ ๊ฒŒ ๋“ค์–ด์žˆ๋Š”์ง€ ํ™•์ธํ•œ๋‹ค.

 

 my solution (Java)

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

public class _23757_ { // ์•„์ด๋“ค๊ณผ ์„ ๋ฌผ ์ƒ์ž 

	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());

		PriorityQueue<Integer> queue = new PriorityQueue<>(Collections.reverseOrder());
		st = new StringTokenizer(bf.readLine());
		for (int i = 0; i < n; i++) {
			queue.add(Integer.parseInt(st.nextToken()));
		}

		st = new StringTokenizer(bf.readLine());
		boolean flag = false;
		for (int i = 0; i < m; i++) {
			int num = Integer.parseInt(st.nextToken());
			int box = queue.poll();
			if (box < num) {
				flag = true;
				break;
			}
			queue.add(box - num);
		}
		if (flag)
			System.out.println(0);
		else
			System.out.println(1);
	}
}

 

Main

๋ณ€์ˆ˜)
n : ์„ ๋ฌผ ์ƒ์ž์˜ ์ˆ˜
m : ์•„์ด๋“ค์˜ ์ˆ˜
queue : ์šฐ์„ ์ˆœ์œ„ ํ (๋‚ด๋ฆผ์ฐจ์ˆœ)
flag : ๋ชจ๋“  ์•„์ด๋“ค์ด ์›ํ•˜๋Š” ๋งŒํผ ์„ ๋ฌผ์„ ๊ฐ€์ ธ๊ฐˆ ์ˆ˜ ์žˆ๋Š”์ง€ ์—ฌ๋ถ€

 

- ์„ ๋ฌผ ์ƒ์ž์˜ ์ˆ˜ (n), ์•„์ด๋“ค์˜ ์ˆ˜(m) ์ž…๋ ฅ

- ๊ฐ ์ƒ์ž์— ๋“ค์–ด์žˆ๋Š” ์„ ๋ฌผ์˜ ์ˆ˜๋ฅผ ์ž…๋ ฅ๋ฐ›์•„ queue์— ์ €์žฅ

- ์•„์ด๊ฐ€ ์›ํ•˜๋Š” ์„ ๋ฌผ์˜ ๊ฐœ์ˆ˜๋ฅผ ์ž…๋ ฅ๋ฐ›์•„ queue์˜ ์ฒซ ๋ฒˆ์งธ ๊ฐ’๋ณด๋‹ค ์ ๊ฒŒ ์›ํ•˜๋ฉด ๋บ€ ๊ฐ’์„ ๋‹ค์‹œ queue์— ์ €์žฅ But ์ฒซ ๋ฒˆ์งธ ๊ฐ’ ๋ณด๋‹ค ํฐ ๊ฐ’์„ ์›ํ•˜๋ฉด ์„ ๋ฌผ์„ ๊ฐ€์ ธ๊ฐ€์ง€ ๋ชปํ•˜๋ฏ€๋กœ ์ข…๋ฃŒ

- flag ์—ฌ๋ถ€์— ๋”ฐ๋ผ ๋‹ต ์ถœ๋ ฅ