[Softeer] 회의실 예약 java

Bong2·2024년 6월 28일
0

알고리즘

목록 보기
40/63

문제 - 회의실 예약

문제접근

회의실예약은 정렬한 뒤에 시키는대로 구현을 하는 문제이다.
근데 내가 작성한 코드는 깔끔하지는 않은 것같다. 이것보다 더 쉽게 작성하는 코드를 좀 참고해야되겠다.

import java.io.*;
import java.util.*;

public class Main {

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        int m = sc.nextInt();

        String s[] = new String[n];

        for(int i=0;i<n;i++)
        {
            s[i] = sc.next();
        }
        //오름차순 정렬(해당 순서대로 회의 시간 저장)
        Arrays.sort(s);

        ArrayList<int []> []meets = new ArrayList[n];
        
        for(int i=0;i<n;i++)
        {
            meets[i] = new ArrayList<>();
        }

        for(int i=0;i<m;i++)
        {
            String name = sc.next();
            int start = sc.nextInt();
            int end = sc.nextInt();

            int idx = Arrays.asList(s).indexOf(name);
            
            meets[idx].add(new int[]{start,end});
        }

        //회의시간 start 시간으로 정렬
        //비어있는 시간 체크
        for(int i=0;i<n;i++)
        {
            int available = 0;
            int sh = 9;
            Collections.sort(meets[i],new Comparator<int[]>(){
                @Override
                public int compare(int a[],int b[])
                {
                    return a[0] -b[0];
                }
            });
            
            StringBuilder sb = new StringBuilder();
            for(int []time : meets[i])
            {   
                if(time[0] != sh)
                {
                    available++;
                    String start = String.format("%02d",sh);
                    String end = String.format("%02d",time[0]);
                    String set = start + "-" + end;
                    sb.append(set).append("\n");
                }
                sh = time[1];
            }

            if(sh != 18)
            {
                available++;
                String str = String.format("%02d",sh);
                sb.append(str+"-"+18).append("\n");
            }
            
            System.out.println("Room "+s[i]+":");
            if(available != 0)
                System.out.println(available +" available:");
            else 
                System.out.println("Not available");
            System.out.print(sb.toString());
            if(i != n-1)
                System.out.println("-----");
        }
        
    }
    
}
profile
자바 백엔드 개발자로 성장하자

0개의 댓글