개발자 톡

연습문제 톡 강의실 배정

틀린 부분을 알려주세요

등록일
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;
        }
    }
}
#강의실_배정

이 카테고리의 톡 더보기