Skip to content

Commit 2aacc08

Browse files
committed
프로그래머스 보석쇼핑LV3
1 parent fa8717f commit 2aacc08

File tree

1 file changed

+42
-0
lines changed

1 file changed

+42
-0
lines changed
Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
import java.util.Arrays;
2+
import java.util.HashMap;
3+
import java.util.HashSet;
4+
import java.util.Vector;
5+
6+
// 프로그래머스 level3 _ 정확도 PASS, 효율성 FAIL
7+
class Solution {
8+
public int[] solution(String[] gems) {
9+
int[] answer = new int[2];
10+
11+
HashSet<String> kinds = new HashSet<>(Arrays.asList(gems)); //보석 종류
12+
HashMap<String, Integer> resultMap = new HashMap< >();
13+
int min = Integer.MAX_VALUE;
14+
15+
for(int i = 0; i<gems.length;i++){
16+
if (!resultMap.containsKey(gems[i]))
17+
resultMap.put(gems[i], i);
18+
else if(resultMap.containsKey(gems[i])){
19+
resultMap.remove(gems[i]);
20+
resultMap.put(gems[i], i);
21+
}
22+
23+
// 보석의 모든 종류가 다 들어옴
24+
if(resultMap.size() == kinds.size()){
25+
Vector<Integer> tmp = new Vector<>(resultMap.values());
26+
Object[] tmpArr = tmp.toArray();
27+
Arrays.sort(tmpArr);
28+
29+
// 기존의 구간과 현재 구간을 비교, 더 적으면 교체
30+
if(min > (int)tmpArr[tmpArr.length-1] - (int)tmpArr[0]) {
31+
min = (int) tmpArr[tmpArr.length - 1] - (int) tmpArr[0];
32+
answer[0] = (int)tmpArr[0]+1;
33+
if(tmpArr.length == 0)
34+
answer[1] = (int)tmpArr[0]+1;
35+
answer[1] = (int)tmpArr[tmpArr.length-1]+1;
36+
}
37+
}
38+
}
39+
return answer;
40+
}
41+
}
42+

0 commit comments

Comments
 (0)