티스토리 뷰

 https://www.acmicpc.net/problem/2256


- 풀이가 어디가 틀린지 모르겠음...




import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.util.Arrays;
import java.util.StringTokenizer;

//https://www.acmicpc.net/problem/2256

//public class Baekjoon2256 {
class Main {
	
	public static void main(String[] args) 
			throws IOException
	{
		
//		InputStreamReader fr = new InputStreamReader(System.in);
		FileReader fr =new FileReader("D:\\dev\\worksspace\\Solution\\src\\source");
		BufferedReader br = new BufferedReader(fr);
		String s;
		
		while ((s=br.readLine())!=null) {
			
			StringTokenizer st = new StringTokenizer(s);
			int K = Integer.parseInt(st.nextToken());
			int N = Integer.parseInt(st.nextToken());
			
			long[] arr = new long[N+1];
			for (int i = 1; i <= N; i++) {
				arr[i] = Long.parseLong(br.readLine());
			}
			Arrays.sort(arr);
			
			//알고리즘 시작.
			long[][] dp = new long[N+1][K+1]; // n번째까지 확인햇을때, 2개짜리 k쌍 선택한 최소값.
			int[][] ssang = new int[N+1][K+1]; // n번째까지 확인햇을때, 2개짜리 k쌍 선택한 최소값.
			for (int i = 1; i <= N; i++) {
				for (int j = 1; j <= K; j++) {
					dp[i][j] = (long)32767*32767*1000;
				}
			}
			
			for (int k = 1; k <= K; k++) {
				for (int n = 2*k; n <= N; n++) {
					long aa = dp[n-2][k-1] + (arr[n]-arr[n-1])*(arr[n]-arr[n-1]);
					if(aa < dp[n-1][k]){
						dp[n][k] = aa;
						ssang[n][k] = ssang[n-2][k-1]+1;
						
					}else{
						dp[n][k] = dp[n-1][k];
						ssang[n][k] = Math.max(ssang[n-1][k]-1, 0); 
						
					}
				}
			}
			
			long answer = Long.MAX_VALUE;
			for (int i = 2*K; i <= N; i++) {
				if(ssang[i][K] + i <= N){
					answer = Math.min(answer, dp[i][K]);
				}
			}
			System.out.println(answer);
		}
		br.close();
		
	}
}


'Programming > Algorithm' 카테고리의 다른 글

[Algorithm] 철로  (944) 2017.01.09
[Algorithm] 백준 알고리즘 9521번 색칠 공부  (262) 2016.12.12
[Algorithm] K번째 최단 경로 (Fail)  (596) 2016.12.01
[Algorithm] 고속도로 건설  (595) 2016.12.01
[Algorithm 10일차] 폐지 두번 줍기  (4) 2016.11.25
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/04   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30
글 보관함