4. 모의고사
https://school.programmers.co.kr/learn/courses/30/lessons/42840
수포자는 수학을 포기한 사람을 줄인 표현입니다. 수포자 삼인방은 모의고사에 수학 문제를 전부 찍으려 합니다. 수포자는 1번 문제부터 마지막 문제까지 다음과 같이 찍습니다.
- 1번 수포자가 찍는 방식 : 1,2,3,4,5,1,2,3,4,5,...
- 2번 수포자가 찍는 방식 : 2,1,2,3,2,4,2,5,2,1,2,3,2,4,2,5,...
- 3번 수포자가 찍는 방식 : 3,3,1,1,2,2,4,4,5,5,3,3,1,1,2,2,4,4,5,5,...
1번 문제부터 마지막 문제까지의 정답이 순서대로 저장된 배열 answers가 주어졌을 때 가장 많은 문제를 맞힌 사람이 누구인지 배열에 담아 반환하도록 solution() 함수를 작성하세요.
제약조건
시험은 최대 10,000 문제로 구성되어 있습니다.
문제의 정답은 1,2,3,4,5 중 하나입니다.
가장 높은 점수를 받은 사람이 여럿이라면 반환하는 값을 오름차순으로 정렬하세요.
입출력의 예
answers | return |
[1,2,3,4,5] | [1] |
[1,3,2,4,2] | [1,2,3] |
내답안
import java.util.*;
class Solution {
public int[] solution(int[] answers) {
int[] man1 = {1,2,3,4,5};
int[] man2 = {2,1,2,3,2,4,2,5};
int[] man3 = {3,3,1,1,2,2,4,4,5,5};
ArrayList arrayList1 = new ArrayList();
ArrayList arrayList2 = new ArrayList();
ArrayList arrayList3 = new ArrayList();
for(int i = 0; i<answers.length; i++){
if(answers[i]==man1[i%man1.length]){
arrayList1.add(1);
}
if(answers[i]==man2[i%man2.length]){
arrayList2.add(1);
}
if(answers[i]==man3[i%man3.length]){
arrayList3.add(1);
}
}
Map<Integer,Integer> ans = new HashMap<>();
ans.put(1, arrayList1.size());
ans.put(2, arrayList2.size());
ans.put(3, arrayList3.size());
int maxValue = Collections.max(ans.values());
int[] topKeys = ans.entrySet()
.stream()
.filter(entry -> entry.getValue() == maxValue)
.mapToInt(Map.Entry::getKey)
.toArray();
return topKeys;
}
}
반응형
'컴퓨터 과학 > 💯 코테' 카테고리의 다른 글
코딩 테스트 합격자 되기 | 문제6. 실패율 (1) | 2024.11.08 |
---|---|
코딩 테스트 합격자 되기 | 문제5. 행렬의 곱셈 (0) | 2024.11.08 |
코딩 테스트 합격자 되기 | 문제3. 두 개 뽑아서 더하기 (0) | 2024.11.08 |
코딩 테스트 합격자 되기 | 문제2. 배열 제어하기 (0) | 2024.11.07 |
코딩 테스트 합격자 되기 | 문제1. 배열 정렬하기 (0) | 2024.11.04 |