-
회의실 예약(java)코딩테스트/softeer 2023. 9. 4. 16:26
https://softeer.ai/practice/info.do?idx=1&eid=626
Softeer
연습문제를 담을 Set을 선택해주세요. 취소 확인
softeer.ai
# fillZero int su = 9; String.format("%02d", su); # compareTo public int compareTo(Room room){ return this.name.compareTo(room.name); }
import java.util.*; import java.io.*; public class Main { public static void main(String args[]) throws IOException { BufferedReader in = new BufferedReader(new InputStreamReader(System.in)); StringTokenizer st = new StringTokenizer(in.readLine()); int roomCnt = Integer.parseInt(st.nextToken()); int reservationCnt = Integer.parseInt(st.nextToken()); ArrayList<Room> roomList = new ArrayList<Room>(); for(int i = 0; i<roomCnt; i++){ roomList.add(new Room(in.readLine())); } for(int i = 0; i<reservationCnt; i++){ StringTokenizer reservationTokens = new StringTokenizer(in.readLine()); String name = reservationTokens.nextToken(); int start = Integer.parseInt(reservationTokens.nextToken()); int end = Integer.parseInt(reservationTokens.nextToken()); for (Room room: roomList){ if (room.isSame(name) == true){ room.reservation(start, end); break; } } } Collections.sort(roomList); for (int i = 0; i< roomList.size(); i++){ for (String text: roomList.get(i).getRoomInfo()){ System.out.println(text); } if(i != roomList.size()-1){ System.out.println("-----"); } } } public static class Room implements Comparable<Room> { private String name; private int timeCnt = 9; private int[] reservationArr = new int[timeCnt]; public Room (String name){ this.name = name; for(int i = 0; i <timeCnt; i++){ reservationArr[i] = 0; } } public void reservation(int startTime, int endTime){ for(int i = getIndex(startTime); i < getIndex(endTime); i++){ reservationArr[i] = 1; } } private int getIndex(int time){ return time - timeCnt; } public Boolean isSame(String name){ return this.name.equals(name); } public int compareTo(Room room){ return this.name.compareTo(room.name); } public String getAvailableText(int size){ if (size > 0){ return size + " available:"; } return "Not available"; } public ArrayList<String> getRoomInfo(){ ArrayList<String> result = new ArrayList<String>(); result.add("Room "+ this.name + ":"); ArrayList<String> availableReservationInfo = getAvailableReservationInfo(); result.add(getAvailableText(availableReservationInfo.size())); result.addAll(availableReservationInfo); return result; } public String fillZero(int su){ return String.format("%02d", su); } public ArrayList<String> getAvailableReservationInfo(){ ArrayList<String> availableReservationInfo = new ArrayList<String>(); for(int i =0; i <timeCnt; i++){ int sum = 0; if(reservationArr[i] == 0){ sum += getTotalLength(i); availableReservationInfo.add(fillZero(i+timeCnt) + "-" + (i +sum+timeCnt)); } i+= sum; } return availableReservationInfo; } public int getTotalLength(int targetIndex){ int result = 1; targetIndex += 1; if (targetIndex < timeCnt && reservationArr[targetIndex] == 0){ result += getTotalLength(targetIndex); } return result; } } }