강의

멘토링

커뮤니티

인프런 커뮤니티 질문&답변

australialove19님의 프로필 이미지
australialove19

작성한 질문수

자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비

5. K번째 큰 수(영상 후반 TreeSet 추가설명)

런타임에러 어떤 부분에서 걸리는걸까요?? (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

김태원님의 프로필 이미지
김태원
지식공유자

안녕하세요^^

아래 입력에서 index out of range 에러가 납니다.

10 1200

23 26 50 17 34 35 50 22 53 41 

답은 -1입니다.

australialove19님의 프로필 이미지
australialove19

작성한 질문수

질문하기