728x90
코딩 테스트 풀이 체크리스트 |
|
2시간 내에 풀었는가? | X |
본인의 실력으로 풀었는가? | O |
코딩테스트 연습 - 보석 쇼핑
["DIA", "RUBY", "RUBY", "DIA", "DIA", "EMERALD", "SAPPHIRE", "DIA"] [3, 7]
programmers.co.kr
import java.util.*;
class Solution {
public int[] solution(String[] gems) {
int[] answer = new int[2]; //리턴할 배열 {시작위치, 끝위치}
//보석 개수와 각 보석의 배열 위치를 지정하기 위해 Map 활용
HashMap<String, Integer> names = new HashMap<>();
//만약 names에 해당 보석에 대한 지정된 위치가 없다면 새로 추가하기
for (int i = 0; i < gems.length; i++) {
if (names.getOrDefault(gems[i], 0) == 0) {
names.put(gems[i], names.size() + 1);
}
}
int size = names.size();
//배열 위치 파악하기 위해서
int[] list = new int[size+1];
//구간 파악을 위해서
int count = Integer.MAX_VALUE;
for (int i = 0; i < gems.length; i++) {
//보석 위치에 대한 배열은 i+1로 수정하기
list[names.get(gems[i])] = i+1;
boolean value = true;
//모두 보석이 등장했는지를 파악하기 위한 for문
for (int j = 1; j <= size; j++) {
if (list[j] == 0) {
value = false;
break;
}
}
int min = Integer.MAX_VALUE;
int max = 0;
//모든 보석이 등장했다면 시작 위치와 끝 위치 파악하고,
//만약 구간 길이가 저장된 count 보다 짧다면 answer 리셋
if (value) {
for (int j = 1; j <= size; j++) {
min = Math.min(list[j], min);
max = Math.max(list[j], max);
}
if (max - min < count) {
answer[0] = min;
answer[1] = max;
count = max-min;
}
}
}
return answer;
}
}
정확성 테스트
테스트 1 〉 | 통과 (0.06ms, 69.2MB) |
테스트 2 〉 | 통과 (0.13ms, 76.1MB) |
테스트 3 〉 | 통과 (0.39ms, 78.7MB) |
테스트 4 〉 | 통과 (2.42ms, 77.6MB) |
테스트 5 〉 | 통과 (0.31ms, 76.1MB) |
테스트 6 〉 | 통과 (0.04ms, 75.2MB) |
테스트 7 〉 | 통과 (0.05ms, 72.2MB) |
테스트 8 〉 | 통과 (2.89ms, 82.9MB) |
테스트 9 〉 | 통과 (3.20ms, 77.8MB) |
테스트 10 〉 | 통과 (3.44ms, 78.4MB) |
테스트 11 〉 | 통과 (5.25ms, 75.3MB) |
테스트 12 〉 | 통과 (3.90ms, 77.4MB) |
테스트 13 〉 | 통과 (6.72ms, 74.6MB) |
테스트 14 〉 | 통과 (16.34ms, 79.2MB) |
테스트 15 〉 | 통과 (7.12ms, 86.9MB) |
효율성 테스트
테스트 1 〉 | 통과 (23.14ms, 54.2MB) |
테스트 2 〉 | 통과 (61.27ms, 56.1MB) |
테스트 3 〉 | 통과 (28.08ms, 57.2MB) |
테스트 4 〉 | 통과 (99.63ms, 61.6MB) |
테스트 5 〉 | 통과 (57.07ms, 61.7MB) |
테스트 6 〉 | 통과 (61.71ms, 65.6MB) |
테스트 7 〉 | 통과 (89.76ms, 67.1MB) |
테스트 8 〉 | 통과 (74.50ms, 66.2MB) |
테스트 9 〉 | 통과 (43.17ms, 69.9MB) |
테스트 10 〉 | 통과 (78.63ms, 75.4MB) |
테스트 11 〉 | 통과 (197.14ms, 79.5MB) |
테스트 12 〉 | 통과 (483.12ms, 80MB) |
테스트 13 〉 | 통과 (609.06ms, 79MB) |
테스트 14 〉 | 통과 (170.16ms, 79.5MB) |
테스트 15 〉 | 통과 (377.50ms, 80.1MB) |
728x90
'코딩테스트 > 프로그래머스' 카테고리의 다른 글
[Java] 프로그래머스 - 괄호 회전하기 (2단계) (0) | 2022.07.06 |
---|---|
[Java] 프로그래머스 - 불량 사용자 (3단계) (0) | 2022.06.21 |
[Java] 프로그래머스 - 표 편집 (3단계) (0) | 2022.06.15 |
[Java] 프로그래머스 - 후보키 (2단계) (0) | 2022.06.10 |
[Java] 프로그래머스 - 자물쇠와 열쇠 (3단계) (0) | 2022.06.09 |