프로그래머스
[프로그래머스][Kotlin] 2020 카카오 인턴십 보석 쇼핑
끝까지 처음처럼
2023. 4. 2. 22:15
728x90
해당 문제는 이분탐색과 HashMap를 이용하면 쉽게 풀 수 있는 문제였습니다.
하기는 제가 작성한 코드와 실행 결과 입니다.
class Solution {
fun solution(gems: Array<String>): IntArray {
var answer = intArrayOf()
var map = HashMap<String,Int>()
gems.forEach {
map.put(it,0)
}
val max = map.size
map = HashMap<String,Int>()
var left = 0
var right = 0
var min = gems.size
while(right < gems.size){
if(map.containsKey(gems[right])){
map[gems[right]] = map[gems[right]]!! + 1
} else {
map[gems[right]] = 1
}
right++
while(map.size == max){
map[gems[left]] = map[gems[left]]!!-1
if(map[gems[left]] == 0){
map.remove(gems[left])
}
left++
if(right-left < min){
min = right - left
answer = intArrayOf(left,right)
}
}
}
return answer
}
}
정확성 테스트
테스트 1 〉 | 통과 (0.10ms, 61.9MB) |
테스트 2 〉 | 통과 (1.48ms, 59.4MB) |
테스트 3 〉 | 통과 (0.49ms, 60.3MB) |
테스트 4 〉 | 통과 (0.42ms, 61.4MB) |
테스트 5 〉 | 통과 (1.00ms, 61MB) |
테스트 6 〉 | 통과 (0.06ms, 61.7MB) |
테스트 7 〉 | 통과 (0.11ms, 61.5MB) |
테스트 8 〉 | 통과 (1.18ms, 60.4MB) |
테스트 9 〉 | 통과 (1.63ms, 61.7MB) |
테스트 10 〉 | 통과 (0.74ms, 61.9MB) |
테스트 11 〉 | 통과 (1.61ms, 60.3MB) |
테스트 12 〉 | 통과 (1.54ms, 61.8MB) |
테스트 13 〉 | 통과 (1.87ms, 62.8MB) |
테스트 14 〉 | 통과 (1.63ms, 61.8MB) |
테스트 15 〉 | 통과 (3.25ms, 64.4MB) |
효율성 테스트
테스트 1 〉 | 통과 (7.78ms, 59.1MB) |
테스트 2 〉 | 통과 (21.05ms, 61.5MB) |
테스트 3 〉 | 통과 (17.62ms, 62.6MB) |
테스트 4 〉 | 통과 (17.31ms, 66.9MB) |
테스트 5 〉 | 통과 (35.98ms, 68.1MB) |
테스트 6 〉 | 통과 (37.73ms, 69.1MB) |
테스트 7 〉 | 통과 (46.58ms, 70.3MB) |
테스트 8 〉 | 통과 (36.56ms, 72.3MB) |
테스트 9 〉 | 통과 (44.94ms, 78.9MB) |
테스트 10 〉 | 통과 (44.37ms, 80.5MB) |
테스트 11 〉 | 통과 (50.16ms, 81.6MB) |
테스트 12 〉 | 통과 (90.55ms, 85.5MB) |
테스트 13 〉 | 통과 (49.01ms, 84.9MB) |
테스트 14 〉 | 통과 (57.97ms, 84.3MB) |
테스트 15 〉 | 통과 (62.94ms, 84.5MB) |