[SWEA] 4408. 자기 방으로 돌아가기(D4)

ERror.ASER·2021년 3월 24일
0

SW Expert Academy

목록 보기
9/11
post-thumbnail

문제 - 4408. 자기 방으로 돌아가기(D4)


풀이

처음에는 짝수방과 홀수방을 따로 나눠서 생각하지 말고 통로라는 새로운 배열을 만들면 쉽게 해결할 수 있다.
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);
	}

}
profile
지우의 블로그

0개의 댓글