728x90
반응형
SMALL
https://softeer.ai/practice/6266
문제스펙
제출결과
예시1로 풀이
- 3개의 방 배열 저장
- 예약테이블 배열 선언 int[][] check = new int[n][18];
- 7개의 반복문 통해, 예약테이블에 시작시간기준 1로 회의실 예약현황 저장 (예약된 회의실)
- (예약테이블, 회의시작시각, 회의종료시각) 변수 선언 int[][] table = new int[18][3];
- 조건문 통해서 회의 시작~종료 시각 체크
- 시작시각, 종료시각 인 경우, 각각 예쁘게 출력
전체 코드
import java.io.*;
import java.util.*;
public class Main {
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 n = Integer.parseInt(st.nextToken());
int m = Integer.parseInt(st.nextToken());
String[] name = new String[n];
for(int i=0; i<n; i++){
name[i] = br.readLine();
}
Collections.sort(Arrays.asList(name));
int[][] check = new int[n][18];
for(int i=0; i<n; i++){
for(int j=9; j<18; j++){
check[i][j] = 0;
}
}
for(int i=0; i<m; i++){
st = new StringTokenizer(br.readLine());
String a = st.nextToken();
int b = Integer.parseInt(st.nextToken());
int c = Integer.parseInt(st.nextToken());
int index = Arrays.asList(name).indexOf(a);
for(int j=b; j<c; j++){
check[index][j] = 1; // 예약
}
}
// for(int i=0; i<n; i++){
// for(int j=0; j<18; j++){
// System.out.print("=====" + check[i][j] ) ;
// }
// System.out.println("========\n\n") ;
// }
for(int i=0; i<n; i++){
bw.write( "Room " + name[i] + ":\n" );
int[][] table = new int[18][3];
int leftCnt = 0;
boolean leftFlag = true;
boolean rightFlag = false;
for(int j=9; j<18; j++){
table[j][0] = check[i][j];
table[j][1] = 0;
table[j][2] = 0;
if(table[j][0] == 0 && leftFlag && !rightFlag){ // 좌측경계
table[j][1] = 1;
leftFlag = false;
rightFlag = true;
leftCnt++;
}
if(table[j][0] == 1 && !leftFlag && table[j-1][0]==0 && rightFlag){ // 우측경계
table[j-1][2] = 1;
rightFlag = false;
leftFlag = true;
}
if(table[j][0] == 0 && !leftFlag && j==17 && rightFlag){ // 우측 끝
table[j][2] = 1;
rightFlag = false;
leftFlag = true;
}
}
// System.out.println();
// System.out.println(" leftCnt " + leftCnt);
// System.out.println();
// int pos = 0;
// for(int j=0; j<9; j++){
// if(table.charAt(j) == '0');
// }
// for(int j=tb0; j<table.length(); j++){
// break;
// }
// while( tb0 >= 0 ){
// System.out.println("========tb0==" + tb0);
//
// int tb1 = Arrays.asList(table).indexOf('1');
// System.out.println("========tb1==" + tb1);
// bw.write((tb0+9) + "-" + (tb1+9));
// table = (String)Arrays.asList(table).subString(1);
// }
int totalCnt = 0;
int left = 0;
int right = 0;
int lineCnt = 0;
if(leftCnt > 0){
bw.write(leftCnt + " available:\n");
for(int j=9; j<18; j++){
// System.out.println("=====-===table==="+table[j][0] + ", " + table[j][1] + ", " + table[j][2]);
if(table[j][1] == 1){
bw.write(String.format("%02d", j));
bw.write("-");
}
if(table[j][2] == 1){
bw.write(String.format("%02d", j+1));
lineCnt++;
if(lineCnt != leftCnt){
bw.newLine();
}
}
// bw.newLine();
}
// for(int q=0; q<totalCnt; q++){
// bw.newLine();
// bw.write(ava[q][0] + "-" + ava[q][1]);
// }
}else{
bw.write("Not available");
}
bw.newLine();
if(i!=n-1) bw.write(String.valueOf("-----"));
if(i!=n-1) bw.newLine();
}
bw.close();
}
}
728x90
반응형
LIST
'알고리즘 단련장 > 소프티어' 카테고리의 다른 글
[소프티어] 레벨2 문제가 추가되었다. (나무 공격 트리어택) (1) | 2024.07.19 |
---|---|
[소프티어] Recovering the Region 자바 풀이 레벨2 (한양대 HCPC 2023) Jigsaw Sudoku 직소 스도쿠 (0) | 2024.07.19 |
[소프티어] 전광판 레벨2 자바 풀이 (21년 재직자 대회 예선) (5) | 2024.07.19 |
[소프티어] GBC 레벨2 자바 풀이 단순 구현 (0) | 2024.07.19 |
[소프티어] 비밀 메뉴 레벨2 자바 풀이 단순 구현 (21년 재직자 대회 예선) (0) | 2024.07.19 |