인프런 커뮤니티 질문&답변
테스트 케이스 실패
작성
·
361
0
import java.util.Arrays;
import java.util.Scanner;
public class Main {
// 결정알고리즘
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int size = scanner.nextInt();
int number = scanner.nextInt();
int[] list = new int[size];
for (int i = 0; i < size; i++) {
list[i] = scanner.nextInt();
}
Arrays.sort(list);
System.out.println(solution(list, number));
}
private static Integer solution(int[] list, int minSize) {
int max = Arrays.stream(list).max().getAsInt();
int sum = Arrays.stream(list).sum();
int lt = max;
int rt = sum;
int answer = 0;
while (lt <= rt) {
int middle = (lt + rt) / 2;
if (count(list, middle) <= minSize) {
answer = middle;
rt = middle - 1;
} else {
lt = middle + 1;
}
}
return answer;
}
private static int count(int[] list, int middle) {
int count = 1; // 초기 앨범 갯수
int sum = 0;
for (int i : list) {
if (sum + i > middle) { // 1장이 담을 수 있는 크기 넘어감
sum = i;
count++;
} else {
sum += i;
}
}
return count;
}
}코드는 동일한테 테스트케이스에서 실패하는 경우가 있습니다.
왜그런걸까요?
답변 1
0
김태원
지식공유자
안녕하세요^^
10 3
6 5 8 5 6 8 7 6 6 7
답이 24인데 23이 나옵니다. 스스로 디버그해보세요.
힌트 : 문제를 정확하게 읽어보세요. 정렬을 해야 하는지 생각해보세요.





