문제 - 회의실 예약
회의실예약은 정렬한 뒤에 시키는대로 구현을 하는 문제이다.
근데 내가 작성한 코드는 깔끔하지는 않은 것같다. 이것보다 더 쉽게 작성하는 코드를 좀 참고해야되겠다.
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("-----");
}
}
}