무조건 최적의 솔루션만 찾아야되나..
Scanner sc = new Scanner(System.in);
T = sc.nextInt();
for(test_case = 1; test_case <= T; test_case++) {
// 이 부분에서 알고리즘 프로그램을 작성하십시오.
int blockCount;
int[] blocksA;
int[] blocksB;
blockCount = sc.nextInt();
blocksA = new int[blockCount];
blocksB = new int[blockCount];
for (int i = 0; i < blockCount; i ++)
blocksA[i] = sc.nextInt();
int count = 0;
boolean zero = false;
boolean atime = true;
while (!zero) {
int[] bA, bB;
if (atime) {
bA = blocksA;
bB = blocksB;
}
else {
bA = blocksB;
bB = blocksA;
}
zero = true;
for (int i = 0; i < blockCount; i ++) {
if (bA[i] == 0) {
bB[i] = 0;
continue;
}
zero = false;
int a, b, c;
if (i > 0) a = bA[i - 1];
else a = 0;
if (i < blockCount - 1) c = bA[i + 1];
else c = 0;
b = bA[i];
if (a >= b && c >= b) {
bB[i] = bA[i] - 1;
}
else {
int d = Math.min(a, c);
bB[i] = d;
}
}
count += 1;
atime = !atime;
}
// 이 부분에서 정답을 출력하십시오.
System.out.println("Case #" + test_case);
System.out.println("COUNT " + (count - 1));
}
}
}
댓글 0