diff --git "a/programmers #67258/java/\353\263\264\354\204\235 \354\207\274\355\225\221.java" "b/programmers #67258/java/\353\263\264\354\204\235 \354\207\274\355\225\221.java" new file mode 100644 index 0000000..c399262 --- /dev/null +++ "b/programmers #67258/java/\353\263\264\354\204\235 \354\207\274\355\225\221.java" @@ -0,0 +1,34 @@ +import java.util.*; + +class Solution { + public int[] solution(String[] gems) { + int[] answer = new int[2]; + int distance = Integer.MAX_VALUE, start = 0, end = 0; + int totalGemKind = new HashSet<>(Arrays.asList(gems)).size(); + Map gemCounter = new HashMap<>(); + + while (true) { + if (gemCounter.size() == totalGemKind) { + gemCounter.put(gems[start], gemCounter.get(gems[start]) - 1); + if (gemCounter.get(gems[start]) == 0) { + gemCounter.remove(gems[start]); + } + ++start; + } else if (end == gems.length) { + break; + } else { + gemCounter.put(gems[end], gemCounter.getOrDefault(gems[end], 0) + 1); + ++end; + } + + if (gemCounter.size() == totalGemKind && end-start < distance) { + distance = end-start; + answer[0] = start+1; + answer[1] = end; + } + } + + + return answer; + } +} \ No newline at end of file