Algorithm/백준 알고리즘

백준_1931 회의실 배정 / 그리디 알고리즘(자바)

미스터로즈 2021. 3. 28. 10:13

시간 & 메모리 제한

문제

입력 & 출력

그리디 알고리즘을 이용한 풀이

package com.Back;

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.Arrays;
import java.util.StringTokenizer;

public class Back_1931 {

	public static void main(String[] args) throws Exception {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		StringTokenizer st;
		int N = Integer.parseInt(br.readLine());
		time[] t = new time[N];
		for (int i = 0; i < N; i++) {
			st = new StringTokenizer(br.readLine());
			int start = Integer.parseInt(st.nextToken());
			int end = Integer.parseInt(st.nextToken());
			t[i] = new time(start, end);
		}
		Arrays.sort(t);
		
		int cnt = 0;
		int end = 0;
		
		for (int i = 0; i < N; i++) {
			if(t[i].start>=end) {
				end = t[i].end;
				cnt++;
			}
		}
		System.out.println(cnt);
	}

	static class time implements Comparable<time>{
		int start;
		int end;

		public time(int start, int end) {
			super();
			this.start = start;
			this.end = end;
		}

		@Override
		public int compareTo(time o) {
			if(this.end==o.end) {
				return this.start - o.start;
			}else {				
				return this.end - o.end;		
			}
		}
	}
}

- 저의 풀이는 time이라는 클래스를 만들어서 문제 풀이를 진행했습니다. 하지만 2가지 방법을 가지고 문제를 진행해도 됩니다. 첫번째는 클래스를 만들지 않고 정렬 Sort를 무명클래스로 만드는 방법입니다. 두번째는 저와 같은 경우로 문제 풀이를 진행하시면 됩니다.