개발자 톡
연습문제 톡
강의실 배정
틀린 부분을 알려주세요
- 등록일
- 2024-02-02 17:45:16
- 조회수
- 336
- 작성자
- sj1402
테스트 케이스 중 하나만 오답이라고 나오는데 어느 부분 때문에 틀린 건지 모르겠습니다 ㅜㅜ
강의가 끝나는 시간을 기준으로 오름차순 정렬한 후에, 가장 첫 번째 요소부터 끝까지 돌면서 이전 강의의 끝나는 시간보다 지금 강의의 시작 시간이 크거나 같으면 ArrayList에 추가하는 식으로 진행했습니다.
import java.io.*; import java.util.*; public class Main { public static void main(String[] args) { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); int N; Class[] arr; int[] dp; try{ N = Integer.parseInt(br.readLine()); arr = new Class[N]; StringTokenizer st; int s, f; for(int i=0;i<N;i++){ st = new StringTokenizer(br.readLine()); s = Integer.parseInt(st.nextToken()); f = Integer.parseInt(st.nextToken()); arr[i] = new Class(s, f); } // 끝나는 시간 기준으로 오름차순 정렬 Arrays.sort(arr); ArrayList<Class> answer = new ArrayList<>(); answer.add(arr[0]); for(int i=1;i<N;i++){ Class c = answer.get(answer.size()-1); if(arr[i].s>=c.f){ answer.add(arr[i]); } } System.out.println(answer.size()); }catch(Exception e){ System.out.println(e); } } } class Class implements Comparable<Class>{ int s; int f; Class(int s, int f){ this.s = s; this.f = f; } @Override public int compareTo(Class c){ if(this.f>c.f){ return 1; }else{ return -1; } } }
#강의실_배정