개발자 톡
자바 답이 없어서 공유합니다
- 등록일
- 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());
}
}