- 난이도: Lv3
프로그래머스 링크: https://school.programmers.co.kr/learn/courses/30/lessons/67258
풀이 링크(GitHub): hayannn/CodingTest_Java/프로그래머스/3/[카카오 인턴] 보석 쇼핑
풀이 시간 : 16분
import java.util.*;
class Solution {
public int[] solution(String[] gems) {
int totalKinds = new HashSet<>(Arrays.asList(gems)).size();
Map<String, Integer> map = new HashMap<>();
int left = 0, right = 0;
int minLen = Integer.MAX_VALUE;
int[] answer = new int[2];
while (right < gems.length) {
map.put(gems[right], map.getOrDefault(gems[right], 0) + 1);
right++;
while (map.size() == totalKinds) {
if (right - left < minLen) {
minLen = right - left;
answer[0] = left + 1;
answer[1] = right;
}
map.put(gems[left], map.get(gems[left]) - 1);
if (map.get(gems[left]) == 0) {
map.remove(gems[left]);
}
left++;
}
}
return answer;
}
}