인프런 커뮤니티 질문&답변

wjsehgus1014님의 프로필 이미지
wjsehgus1014

작성한 질문수

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

interval 병합(Merge Interval)

판단의 근거

작성

·

216

1

안녕하세요 저번 질문 답변이 너무 도움되서 먼저 감사인사드립니다. 

다름이아니라 제가 취준생에 전공생인데도 알고리즘을 잘 공부하지않아서 매우 심각한데.. 

이 문제에선 ArrayList를 사용하시고 meetingroom1 에서는 배열을 사용하셨는데 혹시 판단의 근거가 어떻게 되나요?

경험과느낌인가요 ㅠㅠ 맘은 급한데 공부법을 잘 몰라 힘드네요  

+ Collections.sort(intervals,Comp);

일때는 에러가 안나는데 

Arrays.sort(intervals,Comp);

에서 sort에 에러가 나는이유가 뭘까요? 저는 Comparator 구현으로 하는게 편해서 하는데 에러가 나네요 람다표현은 아직 숙지가안되서 해야할것같습니다..

+

Queue<Interval> heap = new PriorityQueue<Interval>(intervals.length, Comp2);

이 선언과 생성문장을 한국말로 풀어서 말한다면 어떻게 말씀하시는지 궁금합니다... 

마지막으로.. Comp2에 대한 Comparator 구현할때

return값을 왜 o1.end- o2.end  (끝나는시간의 오름차순으로) 했는지 다시한번만 말씀해주시면 정말 감사합니다 질문이 많았네요 ㅠㅠ 천천히 답변주셔두됩니다 감사합니다.

답변 2

2

아 안녕하세요~

질문주신

1. 이 문제에선 ArrayList를 사용하시고 meetingroom1 에서는 배열을 사용하셨는데 혹시 판단의 근거가 어떻게 되나요?

아주 중요한 포인트입니다. array를 쓸지 List를 사용할지.

우리는 2개 다 사용할줄 알아야하죠. 크로스로 자유자재로 구현 해야합니다.

(특히 2차원배열도 List로 자유자재로 바꿀줄 알아야합니다.)

먼저 array를 쓰는이유와 List를 쓰는 이유를 확실히 알아야 합니다.

array는 고정값, List는 가변

고정값을 쓴다는거는 이미 다 정해져 있고, 늘릴수가 없죠  데이타 가져오는데 빠르겠죠

예를들어 코딩면접에 갔는데 어레이로 풀라고 주면 우린 어레이로 풀어야 하고 , 반대로 리스트로 주면 우리는 리스트로 풀어야 합니다. 

결론은 그냥 이 문제는 리스트로 풀고 싶었습니다. 

2. + Collections.sort(intervals,Comp); 일때는 에러가 안나는데

Arrays.sort(intervals,Comp); 에서 sort에 에러가 나는이유가 뭘까요?

Collections.sort(intervals,Comp); ==> 리스트 소팅

Arrays.sort(intervals,Comp);  ==> 배열소팅 

해야합니다.

3. Queue<Interval> heap = new PriorityQueue<Interval>(intervals.length, Comp2);

이 선언과 생성문장을 한국말로 풀어서 말한다면 어떻게 말씀하시는지 궁금합니다..

: 이문제는 megeInteval 문제인가요?? 

어쨌거나 PriorityQueue를 하나 만드는데 , 내부적으로 Comp2조건으로 intervals에 있는 정보를 주면 

PriorityQueue 인 heap이 여기서 알아서 내부적으로 소팅까지 다해서 줍니다. 내부적으로 Tree구조를 만들어서

맥스힙인경우 트리의 꼭대기값이 제일 큰값 ..말로 하니 힘든데 Kclosest 강의 보시면 나올거여여

PriorityQueue는 자주 이용하니까 꼭 알아두시고요~~

저도 일단 급하게 답했는데 부족하신거 있으시면 연락주세요. 

감사합니다.~

0

wjsehgus1014님의 프로필 이미지
wjsehgus1014
질문자

정말 답변 너무 항상 잘해주셔서 감사합니다 ㅠㅠ 배우는게 재밌어지네요 !!

wjsehgus1014님의 프로필 이미지
wjsehgus1014

작성한 질문수

질문하기