import java.util.*;
public int[] solution(int[] answers) {
Map<Integer, Integer> ansMap = new HashMap<>();
List<Integer> answer = new LinkedList<>();
int[] answer1 = {1, 2, 3, 4, 5};
int[] answer2 = {2, 1, 2, 3, 2, 4, 2, 5};
int[] answer3 = {3, 3, 1, 1, 2, 2, 4, 4, 5, 5};
for (int i = 0; i < answers.length; i++) {
if (answer1[i%5] == answers[i]) { ansMap.put(1, ansMap.getOrDefault(1, 0)+1); }
if (answer2[i%8] == answers[i]) { ansMap.put(2, ansMap.getOrDefault(2, 0)+1); }
if (answer3[i%10] == answers[i]) { ansMap.put(3, ansMap.getOrDefault(3, 0)+1); }
}
if (ansMap.size() > 0) {
int max = 0;
for(Map.Entry<Integer, Integer> entry : ansMap.entrySet()) {
if (max < entry.getValue()) {
max = entry.getValue();
answer.clear();
answer.add(entry.getKey());
} else if (max == entry.getValue()){
answer.add(entry.getKey());
}
}
answer.sort((o1, o2) -> o1.compareTo(o2));
}
return answer.stream().mapToInt(i->i).toArray();
}
Map을 사용하여 사용자와 정답을 저장한 후, 최대값을 통해 배열로 풀어냈다
정확성 테스트
정확성 테스트
테스트 1 〉 통과 (2.94ms, 52.6MB)
테스트 2 〉 통과 (3.35ms, 52.9MB)
테스트 3 〉 통과 (4.34ms, 52.5MB)
테스트 4 〉 통과 (3.48ms, 52.7MB)
테스트 5 〉 통과 (4.52ms, 51.9MB)
테스트 6 〉 통과 (3.34ms, 52.3MB)
테스트 7 〉 통과 (9.55ms, 53.3MB)
테스트 8 〉 통과 (12.96ms, 52.8MB)
테스트 9 〉 통과 (8.72ms, 54MB)
테스트 10 〉 통과 (7.52ms, 52.9MB)
테스트 11 〉 통과 (7.91ms, 53MB)
테스트 12 〉 통과 (7.45ms, 53.4MB)
테스트 13 〉 통과 (3.55ms, 52.8MB)
테스트 14 〉 통과 (6.58ms, 53.6MB)
일단 JCF에 대한 의존이 심해 탐색관련하여 소요시간이 높게 나온 것 같다.
import java.util.*;
public static int[] solution(int[] answers) {
int[] answer1 = {1, 2, 3, 4, 5};
int[] answer2 = {2, 1, 2, 3, 2, 4, 2, 5};
int[] answer3 = {3, 3, 1, 1, 2, 2, 4, 4, 5, 5};
int result1 = 0;
int result2 = 0;
int result3 = 0;
for(int i = 0; i < answers.length; i++) {
if (answer1[i%5] == answers[i]) { result1++; }
if (answer2[i%8] == answers[i]) { result2++; }
if (answer3[i%10] == answers[i]) { result3++; }
}
int max = Math.max(result1, Math.max(result2, result3));
List<Integer> list = new ArrayList<>();
if (max == result1) {list.add(1);}
if (max == result2) {list.add(2);}
if (max == result3) {list.add(3);}
int[] answer = new int[list.size()];
int cnt = 0;
for(int num : list)
answer[cnt++] = num;
return answer;
}
최대한 상수배열을 사용하여 다시 풀어낸 답변
정확성 테스트
정확성 테스트
테스트 1 〉 통과 (0.05ms, 52.8MB)
테스트 2 〉 통과 (0.05ms, 52.5MB)
테스트 3 〉 통과 (0.07ms, 54MB)
테스트 4 〉 통과 (0.05ms, 53MB)
테스트 5 〉 통과 (0.05ms, 51.7MB)
테스트 6 〉 통과 (0.06ms, 52.3MB)
테스트 7 〉 통과 (0.47ms, 52.4MB)
테스트 8 〉 통과 (0.14ms, 52.5MB)
테스트 9 〉 통과 (0.84ms, 53.3MB)
테스트 10 〉 통과 (0.27ms, 52.4MB)
테스트 11 〉 통과 (0.93ms, 53.6MB)
테스트 12 〉 통과 (0.78ms, 53.3MB)
테스트 13 〉 통과 (0.11ms, 52.2MB)
테스트 14 〉 통과 (0.92ms, 53.6MB)
소요시간이 매우 단축된 것을 확인할 수 있다
def solution(answers):
answer = []
answer1 = [1, 2, 3, 4, 5]
answer2 = [2, 1, 2, 3, 2, 4, 2, 5]
answer3 = [3, 3, 1, 1, 2, 2, 4, 4, 5, 5]
result1 = 0
result2 = 0
result3 = 0
for i in range(0, len(answers), 1):
if answer1[i % 5] == answers[i]: result1 += 1
if answer2[i % 8] == answers[i]: result2 += 1
if answer3[i % 10] == answers[i]: result3 += 1
maxValue = max(result1, result2, result3)
if maxValue == result1: answer.append(1)
if maxValue == result2: answer.append(2)
if maxValue == result3: answer.append(3)
answer.sort()
return answer
배열을 사용하여 간단히 풀어낸 답변
정확성 테스트
정확성 테스트
테스트 1 〉 통과 (0.01ms, 10.3MB)
테스트 2 〉 통과 (0.01ms, 10.4MB)
테스트 3 〉 통과 (0.01ms, 10.3MB)
테스트 4 〉 통과 (0.01ms, 10.3MB)
테스트 5 〉 통과 (0.03ms, 10.2MB)
테스트 6 〉 통과 (0.03ms, 10.3MB)
테스트 7 〉 통과 (1.59ms, 10.2MB)
테스트 8 〉 통과 (0.76ms, 10.3MB)
테스트 9 〉 통과 (4.20ms, 10.3MB)
테스트 10 〉 통과 (1.39ms, 10.3MB)
테스트 11 〉 통과 (2.62ms, 10.4MB)
테스트 12 〉 통과 (2.39ms, 10.3MB)
테스트 13 〉 통과 (0.20ms, 10.3MB)
테스트 14 〉 통과 (2.65ms, 10.3MB)