programmers_[카카오 인턴] 보석 쇼핑_java
2023. 3. 4. 17:18ㆍAlgorithm/Programmers
728x90
https://school.programmers.co.kr/learn/courses/30/lessons/67258
import java.util.*;
class Solution {
public int[] solution(String[] gems) {
int[] answer = new int[2];
int gemKindCnt = countGem(gems);
int left = 1;
int gemsSize = gems.length;
int size = 100001;
// 2. 구간 구하기
Map<String, Integer> choiceMap = new HashMap<>();
for(int i = 1; i<= gemsSize; i++){
choiceMap.put(gems[i-1], choiceMap.getOrDefault(gems[i-1], 0) + 1);
// 기존 종류 보석
while(choiceMap.get(gems[left-1]) > 1){
choiceMap.put(gems[left-1], choiceMap.get(gems[left-1])-1);
left++;
}
if(choiceMap.size() == gemKindCnt){
if(size > i - left){
answer[0] = left;
answer[1] = i;
size = i - left;
}
}
}
return answer;
}
// 보석 종류 개수 구하기
public int countGem(String[] gems){
Set<String> gemsSet = new HashSet<>();
for(String gem : gems){
gemsSet.add(gem);
}
return gemsSet.size();
}
}
'Algorithm > Programmers' 카테고리의 다른 글
programmers_스티커 모으기(2)_java (0) | 2023.03.06 |
---|---|
programmers_징검다리 건너기_java (0) | 2023.03.06 |
programmers_기지국 설치_java (0) | 2023.03.04 |
programmers_숫자 게임_java (0) | 2023.03.01 |
programmers_단속카메라_java (0) | 2023.03.01 |