inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

묻고 답해요

173만명의 커뮤니티!! 함께 토론해봐요.

MeetingRoom2 질문드립니다.

미해결

정말 쉽게 풀어보는 코딩 테스트 top 기본 문제 (with 자바)

안녕하세요. 강사님. 미팅룸2 강의 내용 질문드립니다. 특정 케이스 에서 PrioryQueue 의 사이즈가 '실제 사이즈 -1' 된 값으로 리턴되는 현상이 발생하더라구요.. 혹시 왜 그런지 알 수 있을까요? 소스코드도 같이 첨부합니다. package CH 1_ S tring A rray ; import java . util . Arrays ; import java . util . PriorityQueue ; import java . util . Queue ; /* class Interval { int start; int end; Interval() { start = 0; end = 0; } Interval(int s, int e) { start = s; end = e; } } */ public class T6_MeetingRoom2 { /* Given an array of meeting time intervals consisting of start and end times [[s1,e1],[s2,e2],...] (si < ei), find the minimum number of conference rooms required. Input: [[0,30],[5,10],[15,20]] Output: 2 Input: [[7,10],[2,4]] Output: 1 */ public static void main ( String [] args ) { // 2 -> 2, true // Interval in1 = new Interval(0, 30); // Interval in2 = new Interval(4, 9); // Interval in3 = new Interval(5, 15); // Interval in4 = new Interval(10, 16); // Interval[] intervals = {in1, in2, in3, in4}; // 1 -> 0, False // Interval in1 = new Interval(7, 10); // Interval in2 = new Interval(2, 4); // Interval[] intervals = {in1, in2}; // 2 -> 1, False Interval in1 = new Interval ( 0 , 30 ); Interval in2 = new Interval ( 5 , 10 ); Interval in3 = new Interval ( 15 , 20 ); Interval [] intervals = { in1 , in2 , in3 }; T6_MeetingRoom2 a = new T6_MeetingRoom2 (); System . out . println ( a . solve ( intervals )); } public int solve ( Interval [] intervals ) { if ( intervals == null || intervals . length == 0 ) return 0 ; Arrays . sort ( intervals , ( Interval a , Interval b ) -> a . start - b . start ); print ( intervals ); System . out . println ( "====================" ); // MinHeap Queue < Interval > pq = new PriorityQueue <>(( Interval a , Interval b ) -> a . end - b . end ); // Add pq . offer ( intervals [ 0 ]); System . out . println ( "pq.peek(): " + pq . peek (). start + "/" + pq . peek (). end ); System . out . println ( "====================" ); for ( int i = 1 ; i < intervals . length ; i ++) { // pq.offer(intervals[i]); if ( pq . peek (). end <= intervals [ i ]. start ) { // i=1, 4 <= 7 // Remove pq . poll (); } else { pq . offer ( intervals [ i ]); } } return pq . size (); } public static void print ( Interval [] intervals ) { for ( int i = 0 ; i < intervals . length ; i ++) { System . out . println ( intervals [ i ]. start + "/" + intervals [ i ]. end ); } } }

  • MeetingRoom2
  • 코테 준비 같이 해요!
  • java
illhumored 댓글 1 좋아요 2 조회수 137

인기 태그

인프런 TOP Writers

주간 인기글