인프런 커뮤니티 질문&답변
런타임에러 어떤 부분에서 걸리는걸까요?? (K번째 큰 수)
작성
·
322
0
import java.util.*;
public class Main {
public int solution(int n, int m, int[] arr) {
int answer = 0;
HashMap<Integer, Integer> map = new HashMap<Integer, Integer>();
for(int i = 0; i < m-1; i++) {
map.put(arr[i], map.getOrDefault(arr[i], 0)+1);
}
int sum = 0, max = Integer.MIN_VALUE;
int lt = 0;
for(int rt = m-1; rt < n; rt++) {
map.put(arr[rt], map.getOrDefault(arr[rt], map.getOrDefault(arr[rt], 0))+1);
for(int key : map.keySet()) {
if(map.get(key) > 1) {
sum = sum + (key * map.get(key));
} else sum += key;
}
if(sum > max) {
max = sum;
answer = max;
}
sum = 0;
map.put(arr[lt], map.get(arr[lt])-1);
if(map.get(arr[lt]) == 0) map.remove(arr[lt]);
lt++;
}
return answer;
}
public static void main(String[] args) {
Main M = new Main();
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
int m = sc.nextInt();
int[] arr = new int[n];
for(int i = 0; i < n; i++) {
arr[i] = sc.nextInt();
}
System.out.println(M.solution(n, m, arr));
}
}답변 1
0





