SF. 회의실 예약

·2022년 11월 4일

Softeer 알고리즘

목록 보기
1/1

https://softeer.ai/practice/info.do?idx=1&eid=626

주어진 정보로 원하는 정보를 추출하는 단순 구현 문제이다.
List 정렬, Map 활용을 통해서 풀 수 있다.

package hello;

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


public class ReserveConvention {
    static BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
    static BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
    static StringTokenizer st;
    static int N, M;

    public static void main(String args[]) throws Exception {
        st = new StringTokenizer(br.readLine());
        N = Integer.parseInt(st.nextToken());
        M = Integer.parseInt(st.nextToken());
        boolean[][] b = new boolean[N][9];
        Map<String, Integer> map = new HashMap<>();
        List<String> list = new ArrayList<>();
        for (int i = 0; i < N; i++) {
            st = new StringTokenizer(br.readLine());
            list.add(st.nextToken());
        }
        list.sort((o1, o2) -> o1.compareTo(o2));
        for (int i = 0; i < N; i++) {
            map.put(list.get(i), i);
        }

        for (int i = 0; i < M; i++) {
            st = new StringTokenizer(br.readLine());
            int tmp = map.get(st.nextToken());
            int start = Integer.parseInt(st.nextToken());
            int end = Integer.parseInt(st.nextToken());
            for (int j = start; j < end; j++) {
                b[tmp][j - 9] = true;
            }
        }

        for (int i = 0; i < N; i++) {
            for (int j = 0; j < 9; j++) {
                System.out.print(b[i][j] + "\t");
            }
            System.out.println();
        }

        List<Integer[]> restList;
        for (int i = 0; i < N; i++) {
            bw.append("Room " + list.get(i) + ":\n");
            restList = new ArrayList<>();
            boolean preB = true;
            int startRest = 0, endRest = 0;
            for (int j = 0; j < 9; j++) {
                if (!b[i][j] && preB) {
                    startRest = j + 9;
                } else if (b[i][j] && !preB) {
                    endRest = j + 9;
                    restList.add(new Integer[]{startRest, endRest});
                }
                preB = b[i][j];
            }
            if(restList.size() == 0){
                bw.append("Not avilable")
            }


        }


    }
}
profile
SSAFY 7기

0개의 댓글