문제 링크
400개의 방이 지그재그로 되어 있다.
테스트 케이스는 1번 라인은 테스트케이스의 수 , 2번라인 이동해야하는 학생의 수
3번 라인은 현재 방 들어갈 방의 값이 순서대로 학생수 만큼 나온다.
한번에 나올때, 겹처서 나오면 안된다. 필요한 최소 시간을 구해야 하는 문제이다.
이동하는데 걸리는 시간은 무조건 1로 가정한다.
package com.Expert;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.Arrays;
import java.util.StringTokenizer;
public class Expert_4408 {
public static void main(String[] args) throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int testCase = Integer.parseInt(br.readLine());
StringBuilder sb = new StringBuilder();
for (int tc = 1; tc <= testCase; tc++) {
StringTokenizer st= new StringTokenizer(br.readLine());
int N = Integer.parseInt(st.nextToken());
int[]arr = new int[201];
for (int i = 0; i < N; i++) {
st = new StringTokenizer(br.readLine()," ");
int temp1 = Integer.parseInt(st.nextToken());
int temp2 = Integer.parseInt(st.nextToken());
int x = Math.min(temp1, temp2);
int y = Math.max(temp1, temp2);
if(x%2==1) {
x=x+1;
}
if(y%2==1) {
y=y+1;
}
for (int j = x/2; j <= y/2; j++) {
arr[j]++;
}
}
Arrays.sort(arr);
sb.append("#"+tc+" "+arr[200]+"\n");
}
System.out.println(sb);
}
}
이 문제는 절반씩으로 나눠서 해결하는게 포인트입니다. 문제 처음 접근할 때, 400개를 다 만들고 접근을 했는데, 10개의 테스트 케이스 중에 9개만 맞는 경우가 계속 발생을 했습니다. 생각을 해보니까 지그재그이기 때문에 1 9로 이동하는 경우와 10 20으로 이동하는 경우는 동시에 나올 수 있는데, 이부분에 대한 테스트케이스를 생각하지 못한거 같습니다.
'Algorithm > SWEA 알고리즘' 카테고리의 다른 글
SWEA_5656 벽돌깨기(자바) (0) | 2021.04.20 |
---|---|
SWEA_4014 활주로 건설(자바) (0) | 2021.04.19 |
SWEA_1251 하나로(자바) / 최소신장트리 (0) | 2021.04.13 |
SWEA_1249 보급로(자바) / BFS (0) | 2021.04.12 |
SWEA_1208 Flatten(자바) / 문제해결 기본 (0) | 2021.03.27 |