프로그래머스 - 모의고사 42840
2022. 6. 20. 20:40ㆍ프로그래머스
문제 링크
코딩테스트 연습 - 모의고사 | 프로그래머스 (programmers.co.kr)
이 문제가 완전탐색에 속해 있는 이유는 answers 배열과 세 사람이 찍은 답을 모두 비교해야 하고, 각 사람마다 정답 갯수를 구한뒤에
또 그 정답갯수들 중 max값을 구해 정답갯수와 모두 비교해야 되기 때문이다.(완전 탐색이 2번이나 일어난다.)
우선 세 사람은 반복적으로 답을 찍게 된다. 답의 주기는 각각 5번, 8번 10번이다.
이 인덱스를 정답의 배열 answers와 비교를 하는데, 나머지 연산자(%) 를 사용해 주면 된다.
포인트
오름차순으로 정답을 정렬하여 나열하라고 되어있는데 그럴 필요가 없다. 제일 문제를 많이 맞춘 사람을 가려내면 되기 때문에 max값과 값이 일치하는 경우에만 초함해주면 될 것이다.
소스코드
public class Solution {
public int[] solution(int[] answers){
int[] a1 = new int[]{1,2,3,4,5}; // 5
int[] a2 = new int[]{2,1,2,3,2,4,2,5}; // 8
int[] a3 = new int[]{3,3,1,1,2,2,4,4,5,5}; // 10
int[] num = new int[4];
for(int i=0;i<answers.length;i++){
if(a1[i%5] == answers[i]) num[1]++;
if(a2[i%8] == answers[i]) num[2]++;
if(a3[i%10] == answers[i]) num[3]++;
}
int max= 0, size =0;
for(int i=1;i<=3;i++){
if(max <= num[i]) {
max = num[i];
}
}
for(int i=1;i<=3;i++){
if(max == num[i]) size++;
}
int ans[] = new int[size];
int k=0;
for(int i=1;i<=3;i++){
if(max == num[i])
ans[k++] = i;
}
return ans;
}
'프로그래머스' 카테고리의 다른 글
프로그래머스 -[카펫] 42842 (0) | 2022.06.24 |
---|---|
프로그래머스 - [소수 찾기] 42839 (0) | 2022.06.21 |
프로그래머스 - [더 맵게] 42626 (0) | 2022.03.18 |
프로그래머스 - [주식 가격] 42584 (0) | 2022.03.13 |
프로그래머스 - [다리를 지나는 트럭] 42583 (0) | 2022.03.13 |