inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

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

MeetingRoom2 질문드립니다.

132

illhumored

작성한 질문수 11

2

안녕하세요. 강사님.

미팅룸2 강의 내용 질문드립니다.

특정 케이스 에서 PrioryQueue 의 사이즈가 '실제 사이즈 -1' 된 값으로 리턴되는 현상이 발생하더라구요..

혹시 왜 그런지 알 수 있을까요?


소스코드도 같이 첨부합니다.

package CH1_StringArray;

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(030);
        Interval in2 = new Interval(510);
        Interval in3 = new Interval(1520);
        Interval[] intervals = {in1in2in3};


        T6_MeetingRoom2 a = new T6_MeetingRoom2();
        System.out.println(a.solve(intervals));
    }

    public int solve(Interval[] intervals) {

        if(intervals == null || intervals.length == 0return 0;

        Arrays.sort(intervals, (Interval aInterval b-> a.start - b.start);
        print(intervals);
        System.out.println("====================");

        // MinHeap
        Queue<Intervalpq = new PriorityQueue<>((Interval aInterval 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=1i<intervals.lengthi++) {
            
            // 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=0i<intervals.lengthi++) {
            System.out.println(intervals[i].start + "/" + intervals[i].end);
        }
    }
}

MeetingRoom2 코테 준비 같이 해요! java

답변 1

0

푸샵맨 코딩스터디

안녕하세요~~

네 소스를 봤는데요 ...잘 못 찾겠습니다.

PrioryQueue 의 사이즈가 -1이 나온다는게 좀 이상하네요

어디서 실행하신건가요??

0

illhumored

네 푸샵맨 코딩스터디 님.

먼저, 답변 감사합니다.

질문 올린 문장에.. 의미전달에 오해가 있을 수 있었겠네요.

pq.size() = -1 이 아닌 pq.sizq()-1 의 값이 나오는 현상입니다.

main 함수 안에 주석 처리된, 샘플로 사용했던 input 으로 예를들면

        // 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. 위 케이스는 pq.size() = 2 로 올바르게 처리되지만

        // 1 -> 0, False
        // Interval in1 = new Interval(7, 10);
        // Interval in2 = new Interval(2, 4);
        // Interval[] intervals = {in1, in2};
2. 위 케이스는 pq.size() = 1 이 나와야 하지만 0 이 나오며       

        // 2 -> 1, False
        Interval in1 = new Interval(030);
        Interval in2 = new Interval(510);
        Interval in3 = new Interval(1520);
        Interval[] intervals = {in1in2in3};

3. 위 케이스는 pq.size() = 2 가 나와야 하지만 1 이 나옵니다.

저도 다시 코드에 문제는 없는지 살펴보겠습니다..

  

강의자료에 나오는 m과 n의 범위가 코딩하고 다른거 같습니다

0

252

0

나선형매트릭스 깃허브에 코드가 없는것같아요

0

206

0

로그 파일의 데이터 재정렬 코드가 깃허브에 없어요!

0

220

0

새로 생긴 기초강의 질문드려요

1

372

1

질문드립니다

1

218

1

Unique Paths Integer 질문입니다

0

217

1

subString 방법으로 문제 풀이 영상은 짤린건가요?

1

250

1

DFS 방식으로 푼 것이 맞나요?

0

305

2

질문드립니다~

0

194

1

left if문에 대해서

1

253

1

오타 인가요?

1

235

1

안녕하세요 강사님

1

186

1

질문 드립니다

0

170

2

Queue&Stack 문제해설집 문의

0

182

1

문제분석 로직 질문

1

227

1

시간 복잡도 문의드립니다.

1

229

1

시간복잡도 질문드립니다.

1

199

1

for-each 문 질문있습니다!

0

292

1

강의영상에서 사용된 로그 메소드가 궁금합니다.

2

279

2

강의자료 + 문제 이해 관련 질문입니다

1

276

3

강사님 오류맞나요?

1

204

1

강사님 시간 복잡도에 대해서 질문드립니다.

1

170

1

질문입니다.

1

200

1

문제에 대한 이해

1

312

1