-
[Softeer] [21년 재직자 대회 예선] 회의실 예약Algorithm/Softeer 2024. 2. 2. 01:30
Softeer - 현대자동차그룹 SW인재확보플랫폼
softeer.ai
import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.*; public class 회의실_예약 { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); StringTokenizer st = new StringTokenizer(br.readLine()); int N = Integer.parseInt(st.nextToken()); int M = Integer.parseInt(st.nextToken()); List<String> room = new ArrayList<>(); boolean[][] isReservation = new boolean[N][10]; for(int i = 0; i < N; i++) { room.add(br.readLine()); } Collections.sort(room); for(int i = 0; i < M; i++) { st = new StringTokenizer(br.readLine()); int roomNumber = room.indexOf(st.nextToken()); int start = Integer.parseInt(st.nextToken()); int end = Integer.parseInt(st.nextToken()); for(int j = start; j < end; j++) { isReservation[roomNumber][j - 9] = true; } } List<String> answer = new ArrayList<>(); for(int i = 0; i < N; i++) { answer.clear(); System.out.println("Room " + room.get(i) + ":"); String temp = ""; for(int j = 0; j < 10; j++) { if(isReservation[i][j]) { if(!temp.isEmpty()) { answer.add(temp + "-" + "1" + (j - 1)); temp = ""; } } else { if(temp.isEmpty()) { if (j == 0) { temp = "09"; } else { temp = "1" + (j - 1); } } } } if(!temp.isEmpty() && !temp.equals("18")) { answer.add(temp + "-18"); } if(answer.isEmpty()) { System.out.println("Not available"); } else { System.out.println(answer.size() + " available:"); for (String s : answer) { System.out.println(s); } } if(i != N - 1) { System.out.println("-----"); } } } }
- 2차원 배열을 사용해서 각 회의실의 예약 시간을 체크했다.
- for문 2개로 모두 방문해보며 비어있는 회의 시간을 탐색하여 answer에 push 해주었다.
- 비어있는 시간에 대한 탐색은 비어있는 시간이 존재할 때 temp에 해당 시간을 넣고 예약 시간을 만날 때까지 탐색을 진행한다.
- 비어있는 시간 ~ 예약 시간까지가 이용가능한 회의 시간이라 판단하게 된다.
'Algorithm > Softeer' 카테고리의 다른 글
[Softeer] [21년 재직자 대회 예선] 전광판 (0) 2024.02.04 [Softeer] [21년 재직자 대회 예선] 비밀 메뉴 (0) 2024.02.03 [Softeer] 바이러스 (0) 2024.01.29