개발자 톡

연습문제 톡 [21년 재직자 대회 예선] 회의실 예약

자바 답이 없어서 공유합니다

등록일
2025-04-15 22:10:26
조회수
10
작성자
skdmldyd23

import java.io.*;

import java.util.*;


public class Main {

  

  public static void main(String[] args) throws IOException {

    StringBuilder sb = new StringBuilder();

    StringBuilder result = new StringBuilder();

    BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

    StringTokenizer st = new StringTokenizer(br.readLine());


    int roomCnt = Integer.parseInt(st.nextToken());

    int bookCnt = Integer.parseInt(st.nextToken());

     

    String key;

    int start, end, avaCnt;

    ArrayList<String> roomStr = new ArrayList<String>();

    HashMap<String, int[]> bookInfo = new HashMap<String, int[]>();


    // 출력 순서 저장

    for(int i = 0; i < roomCnt; i++) roomStr.add(br.readLine());

    Collections.sort(roomStr);


    // 예약 flag 맨 앞에 한칸 플래그용

    for(String roomName : roomStr) {

      bookInfo.put(roomName, new int[] {1,0,0,0,0,0,0,0,0,0,0,0});  

    }


    // 예약마스킹

    for(int i = 0; i < bookCnt; i++) {

      st = new StringTokenizer(br.readLine());

      key = st.nextToken();

      start = Integer.parseInt(st.nextToken());

      end = Integer.parseInt(st.nextToken());


      for(int j = start; j < end; j++){

        bookInfo.get(key)[j-8] = 1;

      }

    }


    for(String key1 : roomStr) {

      avaCnt = 0;

      sb.setLength(0);

       

      for(int i = 1; i < bookInfo.get(key1).length-2; i++) {

        if(bookInfo.get(key1)[i-1] == 1 && bookInfo.get(key1)[i] == 0) {

          sb.append(String.format("%02d", i+8)).append("-");

          avaCnt++;

        } else if(bookInfo.get(key1)[i-1] == 0 && bookInfo.get(key1)[i] == 1) {

          sb.append(String.format("%02d", i+8)).append("\n");

          avaCnt++;

        }

      }


      if(avaCnt%2 == 1) {

        sb.append("18\n");

        avaCnt++;

      }


      sb.insert(0, avaCnt == 0 ? " available\n" : " available:\n")

        .insert(0, avaCnt == 0 ? "Not" : avaCnt/2)

        .insert(0, ":\n")

        .insert(0, key1)

        .insert(0, "Room ")

        .append("-----\n");


      result.append(sb.toString());

    }


    result.delete(result.length()-6, result.length());

    System.out.print(result.toString());

  }

}


#[21년_재직자_대회_예선]_회의실_예약
#자바

이 카테고리의 톡 더보기