728x90
반응형
https://softeer.ai/practice/6291
언어별 시간/메모리
언어시간메모리
JavaScript | 5초 | 256MB |
C | 1초 | 256MB |
C++ | 1초 | 256MB |
Java | 5초 | 256MB |
Python | 5초 | 256MB |
C# | 2초 | 256MB |
Kotlin | 2초 | 256MB |
Go | 2초 | 256MB |
Swift | 2초 | 256MB |
김교수는 강의실 1개에 최대한 많은 강의를 배정하려고 한다. 배정된 강의는 서로 겹치지 않아야 하며 수업시간의 길이와 상관없이 최대한 강의를 많이 배정하라. 단, 두 강의의 시작시간과 종료시간은 겹쳐도 된다.
제약조건
1 ≤ N ≤ 106 인 정수
1 ≤ Si < Fi ≤ 109
입력형식
첫 번째 줄에 강의 개수 N이 주어진다. i + 1 (1 ≤ i ≤ N)번째 줄에는 i번째 강의의 시작 시간 Si와 종료 시간 Fi가 주어진다.
출력형식
첫 번째 줄에 최대 강의 수를 출력하라.
입력예제1
3 1 3 2 4 3 5
출력예제1
2
import java.io.*;
import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner s = new Scanner(System.in);
int N = s.nextInt(); // 강의 수
int[][] times = new int[N][2]; // 강의별 시작/종료 시간
for(int i=0; i<N; i++) {
times[i][0] = s.nextInt();
times[i][1] = s.nextInt();
}
// 그냥 단순한 알고리즘임.
// 강의가 끝나는 시간 순으로 정렬한 다음 이어붙이면 끝.
Arrays.sort(times, (a, b) -> {
return a[1] - b[1];
});
// 첫 강의의 종료 시간 입력 및 첫 강의가 끝났으므로 answer는 1부터 시작
int answer = 1;
int now = times[0][1];
for(int i=1; i<N; i++) {
if(now <= times[i][0]) {
answer++;
now = times[i][1];
}
}
System.out.println(answer);
}
}
728x90
반응형
'알고리즘 > 문제 풀이(출처 : 소프티어)' 카테고리의 다른 글
[JAVA] 금고털이 (1) | 2023.11.20 |
---|---|
[JAVA] 성적 평균 (1) | 2023.11.19 |