JAVA 1차시도
사실 DP로 풀지 않은게 함정.
구간을 S개수 만큼 구간을 나눠서 평균값을 양자화 수라고 지정햇다.
답은 나오는데 최소값은 아니다.
구간을 일정하게 나누는게 답이 아니기 때문 ㅠ
public static int doDP(int n, int s, String line){
// int n = 10;
// int s = 3;
int[] list = new int[n];//{3, 3, 3, 1, 2, 3, 2, 2, 2, 1};
String[] list2 = line.split(" ");
for(int i=0;i<n;i++ ){
list[i] = Integer.parseInt(list2[i]);
}
Arrays.sort(list);
int[] avglist = new int[s];
int sum = 0;
int j =0;
int k=0;
for (int i = 1; i <= n; i++) {
sum += list[i-1];
k++;
if (i % (n / s) == 0 && j<s-1) {
avglist[j] = Math.round(sum / k);
sum = 0;
j++;
k=0;
}
}
avglist[j] = sum / k;
int sum2 =0;
for(int i : list) {
int now =9999999;
for (int avg : avglist) {
int diff = (int) Math.pow(avg-i,2);
if(diff < now){
now = diff;
}
}
sum2+=now;
}
return sum2;
}
'Develope > 알고리즘' 카테고리의 다른 글
[알고스팟] XHAENEUNG (5) | 2017.12.11 |
---|---|
[알고스팟] DIAMONDPATH (2) | 2017.12.11 |
[알고스팟, 백준 9663] N-Queen (0) | 2017.12.04 |
[백준-10825] 국영수 (2) | 2017.11.29 |
[백준-9012] 괄호 (2) | 2017.11.29 |