- 1번,2번,3번 수포자들의 찍는 방식을 각각 배열에 넣어준다.
- 1번 수포자는 5번씩, 2번 수포자는 8번씩, 3번 수포자는 10번씩 찍는 방식을 반복한다.
- 최대값을 구하고 최대값이랑 같으면 수포자들의 점수에
add
를 이용해서 추가한다.
/*
* 프로그래머스 Lv1 - 모의고사
* 문제링크: https://programmers.co.kr/learn/courses/30/lessons/42840
*/
import java.util.*;
class Solution {
public int[] solution(int[] answers) {
ArrayList<Integer> list = new ArrayList<Integer>();
int[] first = {1,2,3,4,5};
int[] second = {2,1,2,3,2,4,2,5};
int[] third = {3,3,1,1,2,2,4,4,5,5};
int[] scores = {0,0,0};
int[] answer = {};
for(int i=0; i<answers.length; i++){
if(first[i%5] == answers[i]){scores[0]++;}
if(second[i%8] == answers[i]){scores[1]++;}
if(third[i%10] == answers[i]){scores[2]++;}
}
int max = 0;
for(int i=0; i<3; i++) {
if(scores[i]>max)
max = scores[i];
}
if(max == scores[0])list.add(1);
if(max == scores[1])list.add(2);
if(max == scores[2])list.add(3);
answer = new int[list.size()];
for(int i =0; i<answer.length; i++) {
answer[i] = list.get(i);
}
return answer;
}
}
초반에는 지문이 생각보다 길어서 어떻게 풀어야 할지 감이 안잡혔는데 문제를 자세히 보니 각 수포자들의 점수를 반영할 배열을 만들어주면 되고 최대값을 구한 다음 비교를 해야 되는 문제인 것을 파악했다. 그에 맞는 알고리즘을 짜고 문제를 해결할 수 있었다.