처음에는 짝수방과 홀수방을 따로 나눠서 생각하지 말고 통로라는 새로운 배열을 만들면 쉽게 해결할 수 있다.
room1과 room2가 공유하는 복도가 corridor[1]이 된다. 이렇게 끝방까지 총 1에서 200까지의 통로가 있다. 해당 통로를 지나가는 학생이 있다면 해당 통로의 값에 +1을 해준다. 학생들이 지나간 후 corridor배열의 max값을 출력하면 총 걸리는 시간이 나온다.
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.Arrays;
import java.util.StringTokenizer;
public class Solution {
public static void main(String[] args) throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine());
StringBuilder sb = new StringBuilder();
int tc = Integer.parseInt(st.nextToken());
for(int t = 1; t<=tc; t++) {
st = new StringTokenizer(br.readLine());
int n = Integer.parseInt(st.nextToken());
int count = 0;
int[] corridor = new int[201];
for(int i=0; i<n; i++) {
st = new StringTokenizer(br.readLine());
int x = (Integer.parseInt(st.nextToken())+1)/2;
int y = (Integer.parseInt(st.nextToken())+1)/2;
if(x<y) {
for(int j=x; j<=y; j++) {
corridor[j]++;
}
}else {
for(int j=y; j<=x; j++) {
corridor[j]++;
}
}
}
Arrays.sort(corridor);
count = corridor[200];
sb.append("#"+t+" "+count+"\n");
}
System.out.println(sb);
}
}