문제 풀이 (JAVA)
import java.util.*;
class Solution {
public int[] solution(int[] answers) {
int [] one ={1,2,3,4,5}; // 1번 수포자 답안
int [] two ={2,1,2,3,2,4,2,5}; // 2번 수포자 답안
int [] three = {3,3,1,1,2,2,4,4,5,5}; // 3번 수포자 답안
int cnt1=0;
int cnt2=0;
int cnt3=0;
int [] resultcnt={0,0,0};
for(int i=0; i<answers.length; i++){
if(answers[i]==one[i%5]){ // 5로 나눈 나머지는 1번 수포자 답안을 반복 비교한다.
resultcnt[0]++; // 1번 수포자 답안 카운트 증가
}
if(answers[i]==two[i%8]){ // 8로 나눈 나머지는 2번 수포자 답안을 반복 비교한다.
resultcnt[1]++; // 2번 수포자 답안 카운트 증가
}
if(answers[i]==three[i%10]){ // 10으로 나눈 나머지는 3번 수포자 답안을 반복 비교한다.
resultcnt[2]++; // 3번 수포자 답안 카운트 증가
}
}
int max=0;
for(int i=0; i<resultcnt.length; i++){
if(max<resultcnt[i]){
max=resultcnt[i]; // 가장 많이 맞춘 답안을 구한다.
}
}
List<Integer> list =new ArrayList<Integer>();
for(int i=0; i<resultcnt.length; i++){
if(max==resultcnt[i]){ // 동일한 점수를 가진 경우를 계산하기 위하여 max값과 비교한다.
list.add(i+1); // 가장 많이맞춘 답안이 여러개일시 i+1번째 수포자를 각각 추가한다.
}
}
Collections.sort(list); // 오름차순 정렬
int[] answer = new int[list.size()];
for(int i=0; i<list.size(); i++){
answer[i]=list.get(i); // 리스트에 있는 값을 배열로 저장하여 출력한다.
}
return answer;
}
}
주요 핵심 포인트
1. 답안을 찍는 패턴을 각 수포자 배열마다 선언하였다.
2. 각각의 맞은 갯수를 저장하는 카운트 변수를 생성하여 답안 배열이 각 수포자 배열의 패턴 숫자와 같다면 답안 카운트를 증가시켰다.
3. 동일한 최대점수를 가진 경우를 처리하기 위하여 가장 큰 점수 값을 비교하여 동일할시 여러명을 출력하도록 for문에 list로 추가하였다.
4. Collections.sort를 사용하여 오름차순 정렬하여 값을 출력하였다.
'프로그래머스(JAVA)' 카테고리의 다른 글
소수 만들기 (0) | 2022.05.21 |
---|---|
완주하지 못한 선수 (0) | 2022.05.21 |
폰켓몬 (0) | 2022.05.21 |
실패율 (0) | 2022.05.21 |
약수의 개수와 덧셈 (0) | 2022.05.21 |