백준 20006 java : 구현

magicdrill·2026년 3월 30일

백준 문제풀이

목록 보기
676/679

백준 20006 java : 구현

import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.Scanner;

public class bj20006 {
    static class Player {
        int level;
        String nickname;
        
        public Player(int level, String nickname) {
            this.level = level;
            this.nickname = nickname;
        }
    }

    static class Room {
        int baseLevel; // 첫 입장자 레벨
        ArrayList<Player> players = new ArrayList<>();

        public Room(Player host) {
            this.baseLevel = host.level;
            players.add(host);
        }
    }

    static ArrayList<Player> players = new ArrayList<>();
    static ArrayList<Room> rooms = new ArrayList<>();
    static int p, m;

    public static void main(String[] args) {
        inputData();
        matchRoom();
        printResult();
    }

    public static void inputData(){
        Scanner sc = new Scanner(System.in);
        p = sc.nextInt(); // 플레이어 수
        m = sc.nextInt(); // 방 정원

        int i, l;
        String n;

        for(i = 0; i < p; i++){
            l = sc.nextInt();
            n = sc.next();

            players.add(new Player(l, n));
        }

        sc.close();
    }

    public static void matchRoom() {
        for (Player player : players) {
            boolean entered = false;

            for (Room room : rooms) {
                if (room.players.size() < m &&
                        player.level >= room.baseLevel - 10 &&
                        player.level <= room.baseLevel + 10) {
                    room.players.add(player);
                    entered = true;
                    break;
                }
            }

            if (!entered) {
                rooms.add(new Room(player));
            }
        }
    }

    public static void printResult(){
        int i, j;

        for(i = 0; i < rooms.size(); i++){
            Room room = rooms.get(i);

            room.players.sort(new Comparator<Player>() {
                @Override
                public int compare(Player o1, Player o2) {
                    return o1.nickname.compareTo(o2.nickname);
                }
            });

            if(rooms.get(i).players.size() == m){
                System.out.println("Started!");
            }
            else{
                System.out.println("Waiting!");
            }

            for(j = 0; j < rooms.get(i).players.size(); j++){
                System.out.println(rooms.get(i).players.get(j).level + " " + rooms.get(i).players.get(j).nickname);
            }
        }
    }
}

0개의 댓글