문제링크 : https://programmers.co.kr/learn/courses/30/lessons/67258
import java.util.*;
class Solution {
public static int[] solution(String[] gems) {
int[] answer = new int[2];
HashSet<String> hs = new HashSet<String>();
for(int i=0;i<gems.length;i++){
hs.add(gems[i]);
}
int cnt = hs.size();
int left = 0;
int right = 0;
HashMap<String,Integer> hm = new HashMap<String,Integer>();
int len = 987654321;
while(right < gems.length){
while(hm.size() < cnt && right < gems.length){
String newBosuc = gems[right++];
if(hm.containsKey(newBosuc)){
int count = hm.get(newBosuc);
hm.put(newBosuc,count+1);
}else{
hm.put(newBosuc,1);
}
}
while(hm.size() == cnt){
int newLen = right-left;
if(len > newLen){
len = newLen;
answer[0] = left+1;
answer[1] = right;
}
String erased = gems[left++];
int count = hm.get(erased);
if(count==1){
hm.remove(erased);
}else {
hm.put(erased,count-1);
}
}
}
return answer;
}
}
'알고리즘 > 프로그래머스' 카테고리의 다른 글
[프로그래머스] GPS / JAVA (0) | 2022.02.18 |
---|---|
[프로그래머스] 불량 사용자 / JAVA (0) | 2022.02.18 |
[프로그래머스] 순위 / JAVA (0) | 2022.02.18 |
[프로그래머스] 네트워크 / JAVA (0) | 2022.02.18 |
[프로그래머스] 정수 삼각형 / JAVA (0) | 2022.02.18 |