Link
Today
Total
10-17 12:16
Archives
관리 메뉴

초보개발자 긍.응.성

[Java] 9088. 다이아몬드 본문

코딩테스트/SW Expert Academy

[Java] 9088. 다이아몬드

긍.응.성 2020. 3. 26. 19:41
반응형

D4-9088. 다이아몬드

 

문제출처: https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AW7Oktj6WMQDFAWY&categoryId=AW7Oktj6WMQDFAWY&categoryType=CODE

 

SW Expert Academy

SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!

swexpertacademy.com

 

크기에 대해 다이아몬드 갯수 배열에 저장. 합에 대해 왼쪽 끝자리를 빼고 오른쪽 끝자리를 더하며 묶음의 최대 크기를 찾는다.

 

import java.io.BufferedWriter;
import java.io.OutputStreamWriter;
import java.util.Arrays;
import java.util.Scanner;

class Solution {
	
	static int[] diamondsCounter = new int[10001];
	public static void main(String args[]) throws Exception {
		Scanner sc = new Scanner(System.in);
		BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
		
		int T = sc.nextInt();
		int N, K;
		for (int test_case = 1; test_case <= T; test_case++) {
			N = sc.nextInt();
			K = sc.nextInt();
			
			Arrays.fill(diamondsCounter, 0);
			for (int i = 0; i < N; i++) {
				diamondsCounter[sc.nextInt()]++;
			}

			int max = 0;
			
			for (int j = 1; j <= 1 + K; j++) {
				max += diamondsCounter[j];
			}
			
			int sum = max;
			for (int i = 1; i < diamondsCounter.length - K - 1; i++) {
				sum = sum + diamondsCounter[i + K + 1] - diamondsCounter[i];
				if (max < sum)
					max = sum;
			}
			
			bw.write("#" + test_case + " " + max + "\n");
		}

		sc.close();
		bw.flush();
		bw.close();
	}
}
반응형
Comments