23-09-21 TIL

more·2023년 9월 21일

백준 20006 (랭킹전 대기열) - Java

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

public class Main {
    public static class Room
    {
        List<Player> players = new ArrayList<>();
    }

    public static class Player implements  Comparable<Player>
    {
        int level;
        String name;

        public Player(int level, String name) {
            this.level = level;
            this.name = name;
        }

        @Override
        public int compareTo(Player o) {
            return name.compareTo(o.name);
        }
    }
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));

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

        int totalPlayer = Integer.parseInt(st.nextToken());
        int maxPlayer = Integer.parseInt(st.nextToken());

        ArrayList<Room> existRooms = new ArrayList<>();

        for (int i = 0; i < totalPlayer; i++) {
            st = new StringTokenizer(br.readLine());
            int currLevel = Integer.parseInt(st.nextToken());
            String currName = st.nextToken();

            Boolean isOkInCurrRoom = false;

            for (Room room : existRooms) {
                if (room.players.size() >= maxPlayer)   continue;
                if (!room.players.isEmpty() && Math.abs(room.players.get(0).level - currLevel) <= 10) {
                    isOkInCurrRoom = true;
                    room.players.add(new Player(currLevel, currName));
                    break;
                }
            }

            if (!isOkInCurrRoom) {
                Room room = new Room();
                room.players.add(new Player(currLevel, currName));
                existRooms.add(room);
            }
        }

        for (Room room : existRooms) {
            Collections.sort(room.players);
            if (room.players.size() == maxPlayer)   bw.write("Started!\n");
            else {
                bw.write("Waiting!\n");
            }

            for (int i = 0; i < room.players.size(); i++) {
                int resLevel = room.players.get(i).level;
                String resName = room.players.get(i).name;

                bw.write(resLevel + " " + resName + "\n");
            }
        }


        bw.flush();
        bw.close();
        br.close();
    }

}

0개의 댓글