https://school.programmers.co.kr/learn/courses/30/lessons/42840?language=java
1번 문제부터 마지막 문제까지의 정답이 순서대로 들은 배열 answers가 주어졌을 때, 가장 많은 문제를 맞힌 사람이 누구인지 배열에 담아 return 하도록 solution 함수를 작성해주세요.
1번사람 = {1,2,3,4,5};
2번사람 = {2,1,2,3,2,4,2,5};
3번사람 = {3,3,1,1,2,2,4,4,5,5};
1. 각 사람의 정답으로 풀었을때 점수 계산.
2. Pair(n번째 사람, value) 클래스를 만든다.
3. value 기준 내림차순
4. max_value를 구하고 최댓값인 사람들만 리스트에 추가.
5. ArrayList를 int array 로 convert.
import java.util.*;
class Pair implements Comparable<Pair>{
int x; //index
int y; //value
Pair(int a, int b){
x =a ;
y = b;
}
public int compareTo(Pair other)
{
return other.y - this.y;
}
public int getX(){
return this.x;
}
public int getY(){
return this.y;
}
}
class Solution {
public int numberOfanswer(int[] number, int[] answer){
int j =0 ;
int i = 0;
int count =0 ;
while(i < answer.length){
if(answer[i++] == number[j++]) count++;
if(j == number.length) j = 0 ; //j 초기화.
}
return count;
}
public int[] solution(int[] answers) {
int[] number1 = {1,2,3,4,5};
int[] number2 = {2,1,2,3,2,4,2,5};
int[] number3 = {3,3,1,1,2,2,4,4,5,5};
//index, value
int p1 = numberOfanswer(number1, answers);
int p2 = numberOfanswer(number2, answers);
int p3 = numberOfanswer(number3, answers);
List <Pair> list = new ArrayList();
List <Integer> answer = new ArrayList();
list.add(new Pair(1,p1));
list.add(new Pair(2,p2));
list.add(new Pair(3,p3));
Collections.sort(list);
int max=list.get(0).getY();
answer.add(list.get(0).getX());
for(int i = 1 ;i < list.size(); i++){
if(list.get(i).getY() == max){
answer.add(list.get(i).getX());
}
}
return answer.stream().mapToInt(i -> i).toArray();
}
}