본문 바로가기

백준

[백준][JAVA]회의실배정(1931번) - 그리디 알고리즘

반응형

https://www.acmicpc.net/problem/1931

 

1931번: 회의실 배정

(1,4), (5,7), (8,11), (12,14) 를 이용할 수 있다.

www.acmicpc.net

* 문제는 해당 게시물 참고바랍니다.

 

그리디 알고리즘이란

그리디 알고리즘은 흔히 탐욕 알고리즘이라고도 불리며 미래를 생각하지 않고 각 단계에서 가장 최선의 선택을 하는 기법입니다. 각 단계에서 한 선택이 최선의 선택을 한 것이길 바라고 전체적으로도 최선이길 바라는 알고리즘입니다.

 

해당 문제를 해결한 코드입니다.


  
import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int n = scanner.nextInt();
int [][]table = new int[n][2];
int count =0;
//입력받기
for(int i=0; i<n; i++){
for(int j=0; j<2; j++){
table[i][j] = scanner.nextInt();
}
}
//정렬
Arrays.sort(table, new Comparator<int[]>() {
@Override
public int compare(int[] table1, int[] table2) {
// 종료시간이 같을 경우 시작시간이 빠른순으로 정렬
if(table1[1] == table2[1]) {
return table1[0] - table2[0];
}
return table1[1] - table2[1];
}
});
//counting
int j=0;
for(int i=0; i<n-1; i++){
int tmp = table[j][1];
if(tmp <= table[i+1][0]){
count++;
j=i+1;
}
}
System.out.println(count+1);
}
}

이렇게 해결하였습니다.

 

여기서 


  
System.out.println(count+1);

해당 코드에서 count+1을 한 이유는 최초의 선택을 배정 가능한 테이블의 수로 포함하기 위해서 입니다.

 

결과 

반응형