본문 바로가기

개발중/Algorithm

MeetingRooms

728x90
반응형

기사 시험도 끝났겠다. 실기 준비와 틈틈히 알고리즘을 병행 해야지.

1일 1알고리즘이다.

 

오늘 해본 알고리즘은 미팅룸 알고리즘이다.

import java.util.Arrays;
import java.util.Comparator;

class Interval{

	int start;
	int end;
	
	Interval(){
		this.start = 0;
		this.end = 0;
	}

	public Interval(int s, int e) {
		this.start = s;
		this.end = e;
	}
}

public class MeetingRooms {
	
	public static void main(String[] args) {
		
		MeetingRooms a = new MeetingRooms();
		
		Interval in1 = new Interval(15, 30);
		Interval in2 = new Interval(5, 10);
		Interval in3 = new Interval(0, 30);
		
		Interval[] interval = {in1, in2, in3};
		System.out.println(a.solve(interval));
	}
    
	public boolean solve(Interval[] intervals ) {
    
		if( intervals == null ){
			return false;
		}
		
		print(intervals);
		Arrays.sort(intervals, Comp);
		print(intervals);
		return true;
	}
	
	Comparator<Interval> Comp = new Comparator<Interval>() {

		@Override
		public int compare(Interval o1, Interval o2) {
			// 오름차순
			return o1.start - o2.start;
		}
	};
	
	public void print( Interval[] intervals ) {
		 
		for( int i=0; i<intervals.length; i++ ) {
			Interval in = intervals[i];
			System.out.println(in.start + " " + in.end);
		}
	}
}

 

Interval  이라는  class 는 

start 와 end 를 가지고 있다.

 

 

 

 

 

 

 

 

 

 

 

 

긱긱 start 값과 end 값을 대입 해주고

 

 

 

 

 

 

 

 

 

 

 

배열로 만들자

 

 

 

 

 

 

 

 

 

 

 

 

배열을 실어서 solve 에게 보내주지

 

 

 

 

 

 

 

 

 

 

 

 

solve 는 배열을 받아서

null 검사를 진행하고

 

Arrays 를 사용헤서 sort 를 한다.

배열을 정렬한다는 말인가 보다.

 

 

 

 

 

Comp 는 Comparator<Interval> 의 인스턴스 인데

 

Comparator 는 기본 정렬 기준과는 다른 방식으로 정렬하고 싶을 떄 사용하는 클래스이다.

 

 

그래서 저렇게 자동으로 Overeide가 생겼나보다. 오 공부 할 수롣록 재밌는게, 이런 기능도 있다는게 신기해

코딩을 길로 비유하면 모르면 한참 돌아가고 알면 더 쉽게 갈 수 있는 길 인거 같아

 

Arrays.sort ( Intervals, Comp ) => 이게 그러면 내가 설정한 정렬 방식 대로 정렬을 하겠다는 의미 이구나?!?

 

 매개인자로 받은  o1과 o2 의 start 를 이용해서 빼기를 한다라...

 

 

 

 

 

예를들어

o1 의 start  = 20 

o2 의 start  = 50

 

return 은 -30 인거 잖아?

 

아...???........ 음수값이 반환이 되면 안바꾸는구나???!!! 대박

 

결과 값은 정렬이 잘되어서 나온다.

오늘 Comparator 클래스 하나 익히고 기분 좋게 마무리이!

 

728x90
반응형

'개발중 > Algorithm' 카테고리의 다른 글

MeetingRoom2  (0) 2020.08.25
Merge 알고리즘  (0) 2020.08.24
Daily Temperature  (0) 2020.08.23
MoveZero  (0) 2020.08.23
MoveZeros  (0) 2020.08.23