프로그래머스 <모의고사>
https://programmers.co.kr/learn/courses/30/lessons/42840
코딩테스트 연습 - 모의고사
수포자는 수학을 포기한 사람의 준말입니다. 수포자 삼인방은 모의고사에 수학 문제를 전부 찍으려 합니다. 수포자는 1번 문제부터 마지막 문제까지 다음과 같이 찍습니다. 1번 수포자가 찍는
programmers.co.kr
<모의고사>
3명의 수포자 1, 2, 3은 찍는 방식이 다르다. 모의고사의 정답이 주어졌을 때, 수포자 중 가장 많이 답을 맞추는 수포자(들)를 반환하여라.
문제 해결
3명의 수포자가 찍는 법을 각각 one, two, three에 저장하였다.
찍는 법이 모두 다르기 때문에 one, two, three의 길이가 다르다.
one, two, three의 길이를 n1, n2, n3에 저장한다.
answers를 for문을 돌면서 answers[i]와 각 찍는 법 배열의 (i%해당 배열의 길이)의 값이 같으면 해당 수포자의 정답 수에 +1 한다.
코드
class Solution {
public int[] solution(int[] answers) {
int[] count = {0, 0, 0};
int[] one = {1,2,3,4,5};
int[] two = {2,1,2,3,2,4,2,5};
int[] three = {3,3,1,1,2,2,4,4,5,5};
int n1 = one.length;
int n2 = two.length;
int n3 = three.length;
int len = answers.length;
for(int i = 0 ; i < len; i++){
if(answers[i] == one[i%n1]){
count[0]++;
}
if(answers[i] == two[i%n2]){
count[1]++;
}
if(answers[i] == three[i%n3]){
count[2]++;
}
}
int maxN = 0;
int size = 0;
for(int i = 0 ; i < 3; i++){
if(maxN < count[i]){
maxN = count[i];
size = 1;
}else if (maxN == count[i]){
size++;
}
}
int[] answer = new int[size];
int idx = 0;
for(int i = 0 ; i < 3; i++){
if(maxN == count[i]){
answer[idx] = i+1;
idx++;
}
}
return answer;
}
}
결과
728x90
'Algorithm' 카테고리의 다른 글
[프로그래머스] 섬 연결하기 (0) | 2021.11.24 |
---|---|
[프로그래머스] N으로 표현 (0) | 2021.11.23 |
[프로그래머스] 큰 수 만들기 (0) | 2021.11.18 |
[프로그래머스] 디스크 컨트롤러 (0) | 2021.11.17 |
[프로그래머스] 더 맵게 (0) | 2021.11.16 |
댓글