ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [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에 해당 시간을 넣고 예약 시간을 만날 때까지 탐색을 진행한다. 
    • 비어있는 시간 ~ 예약 시간까지가 이용가능한 회의 시간이라 판단하게 된다.
Designed by Tistory.