๐ŸŒžAlgorithm/๐Ÿ”ฅprogrammers

[programmers] ํ˜ธํ…” ๋Œ€์‹ค

๋ฟŒ์•ผ._. 2026. 5. 22. 12:37
๋ฌธ์ œ
https://school.programmers.co.kr/learn/courses/30/lessons/155651
 

ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค

SW๊ฐœ๋ฐœ์ž๋ฅผ ์œ„ํ•œ ํ‰๊ฐ€, ๊ต์œก์˜ Total Solution์„ ์ œ๊ณตํ•˜๋Š” ๊ฐœ๋ฐœ์ž ์„ฑ์žฅ์„ ์œ„ํ•œ ๋ฒ ์ด์Šค์บ ํ”„

programmers.co.kr

 


< ํ˜ธํ…” ๋Œ€์‹ค >

 

๋ฌธ์ œ ํ’€์ด (Java)

import java.util.*;

class Solution {
	public int solution(String[][] book_time) {
		int answer = 0;

		Arrays.sort(book_time, new Comparator<String[]>() {
			@Override
			public int compare(String[] o1, String[] o2) {

				int h1 = Integer.parseInt(o1[0].split(":")[0]);
				int m1 = Integer.parseInt(o1[0].split(":")[1]);

				int h2 = Integer.parseInt(o2[0].split(":")[0]);
				int m2 = Integer.parseInt(o2[0].split(":")[1]);

				if (h1 == h2) {
					return m1 - m2;
				}
				return h1 - h2;
			}
		});

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

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

		});

		for (int i = 0; i < book_time.length; i++) {
			int h1 = Integer.parseInt(book_time[i][0].split(":")[0]);
			int m1 = Integer.parseInt(book_time[i][0].split(":")[1]);

			int h2 = Integer.parseInt(book_time[i][1].split(":")[0]);
			int m2 = Integer.parseInt(book_time[i][1].split(":")[1]);

			if (!queue.isEmpty()) {
				if (queue.peek()[0] == h1) {
					if (queue.peek()[1] <= m1) {
						queue.poll();
					}
				} else if (queue.peek()[0] < h1) {
					queue.poll();
				}
			}
			m2 += 10;
			if (m2 >= 60) {
				m2 -= 60;
				h2 += 1;
			}
			queue.add(new int[] { h2, m2 });
			answer = Math.max(answer, queue.size());
		}

		return answer;
	}
}

 

๋จผ์ € ์˜ˆ์•ฝ ์‹œ๊ฐ์„ ๋Œ€์‹ค ์‹œ์ž‘ ์‹œ๊ฐ์ด ๋น ๋ฅธ ์ˆœ๋Œ€๋กœ ์ •๋ ฌํ•œ๋‹ค. ๊ทธ ํ›„ PriorityQueue๋ฅผ ์ข…๋ฃŒ ์‹œ๊ฐ์ด ๋น ๋ฅธ ์ˆœ๋Œ€๋กœ ์ •๋ ฌํ•˜๋„๋ก ์„ ์–ธํ•œ๋‹ค. ์˜ˆ์•ฝ ์‹œ๊ฐ์„ ํƒ์ƒ‰ํ•˜๋ฉฐ PriorityQueue์— ๊ฐ’์ด ์žˆ๋‹ค๋ฉด ์ฒซ ๋ฒˆ์งธ ๊ฐ’์˜ ์ข…๋ฃŒ ์‹œ๊ฐ๊ณผ ์˜ˆ์•ฝ ์‹œ๊ฐ์˜ ์‹œ์ž‘ ์‹œ๊ฐ์„ ๋น„๊ตํ•ด ์‹œ์ž‘ ์‹œ๊ฐ์ด ์ข…๋ฃŒ ์‹œ๊ฐ๋ณด๋‹ค ๋’ค๋ผ๋ฉด pollํ•œ ํ›„ ์ถ”๊ฐ€ํ•œ๋‹ค. ์‹œ์ž‘ ์‹œ๊ฐ์ด ์ข…๋ฃŒ ์‹œ๊ฐ๋ณด๋‹ค ์•ž์ด๊ฑฐ๋‚˜ PriorityQueue๊ฐ€ ๋น„์–ด์žˆ๋‹ค๋ฉด ๊ทธ๋ƒฅ ์ถ”๊ฐ€ํ•œ๋‹ค. ์ด๋•Œ, PriorityQueue์˜ ํฌ๊ธฐ์˜ ์ตœ๋Œ“๊ฐ’์„ answer๋กœ ์—…๋ฐ์ดํŠธํ•œ๋‹ค. 

 

์ตœ์ข… answer์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค. 

 

* ๋‹ค ํ’€๊ณ  ๋ณด๋‹ˆ ์‹œ๊ฐ์„ ๊ณ„์†ํ•ด์„œ h, m์œผ๋กœ ๋‚˜๋ˆ„๋Š” ๊ฒƒ๋ณด๋‹ค m์œผ๋กœ ํ†ต์ผํ•ด์„œ ํ’€๋ฉด ์ข‹์•˜๊ฒ ๋‹ค๋Š” ์ƒ๊ฐ์ด ๋“ค์—ˆ๋‹ค. 



 

์ถœ์ฒ˜: ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค ์ฝ”๋”ฉ ํ…Œ์ŠคํŠธ ์—ฐ์Šต, 
https://school.programmers.co.kr/learn/challenges