MeetingRooms

2020. 8. 23. 08:48·개발중/Algorithm
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
'개발중/Algorithm' 카테고리의 다른 글
  • Merge 알고리즘
  • Daily Temperature
  • MoveZero
  • MoveZeros
Binsoo
Binsoo
내 트러블 슈팅
  • Binsoo
    정수빈 기술블로그임.
    Binsoo
  • 전체
    오늘
    어제
    • 빈수 개발자 개발 일기 (932) N
      • 개발중 (634) N
        • Spring Boot (95)
        • Spring Security (2)
        • Spring Batch (6)
        • Spring Boot & Redis (13)
        • Java Persistence API (JPA) (28)
        • Web (42)
        • Rest Api (7)
        • Spring Concurrency Control (3)
        • Redis (8)
        • Kubernetes (k8s) (4)
        • MYSQL (35)
        • AirFlow (15)
        • Docker (2)
        • Git (22)
        • Linux (9)
        • JSON Web Tokens (JWT) (4)
        • Troubleshooting (87)
        • Swagger (0)
        • Vue.js (52)
        • Java (74)
        • html (12)
        • C (5)
        • jQuery (15)
        • JavaServer Pages (JSP) (17)
        • Arduino (1)
        • JavaScript (35)
        • Amazon Web Services (AWS) (11)
        • Algorithm (9)
        • 참고 기능 (18) N
        • mongo (2)
      • PROJECT (27)
        • 스프링부트+JPA+몽고 API 개발 (3)
        • MINI (2)
        • 게시판 (3)
        • vue 프로젝트 (1)
        • JPA 사이드 프로젝트 기록 (17)
      • TEAM STUDY (156)
        • 가상 면접 사례로 배우는 대규모 시스템 설계 기초 (8)
        • 한 권으로 읽는 컴퓨터 구조와 프로그래밍 (12)
        • NAVER DEVELOPER (4)
        • LINUX (23)
        • PYTHON (19)
        • SERVER (8)
        • 알고리즘 코딩 테스트 스터디 (31)
        • 쿠버네티스 (40)
        • 대세는 쿠버네티스 [초급~중급] (11)
      • BOOK (0)
      • 자격증 (61)
        • 리눅스 1급 - 필기 기록 (19)
        • 네트워크 관리사 (2)
        • 네트워크 관리사 2급 - 실기 기록 (21)
        • 네트워크 관리사 2급 - 필기 기록 (16)
        • 정보처리 (2)
      • 직장인 대학원 (17)
        • 기록 (1)
        • 캐글 스터디 (3)
        • R (12)
  • 블로그 메뉴

    • 홈
    • 태그
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    docker
    REST API
    리눅스 마스터
    쿠버네티스 스터디
    네트워크 관리사 학점
    네트워크 관리사 실기
    jpa
    Spring
    redis
    BackendDevelopment
    리눅스 마스터 1급
    스프링
    리눅스 마스터 1급 정리
    파이썬
    VUE
    git
    네트워크 관리사 2급 실기
    네트워크 관리사 자격증
    파이썬 알고리즘
    리눅스 1급 요약
    네트워크 관리사 2급
    Git 저장소
    리눅스 마스터 요약
    리눅스 마스터 1급 요약
    springboot
    네트워크 관리사 요약
    알고리즘
    java
    쿠버네티스
    네트워크 관리사
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.4
Binsoo
MeetingRooms

개인정보

  • 티스토리 홈
  • 포럼
  • 로그인
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.