프로그래머스 알고리즘 (java)
모의고사
코드 리뷰
조건
- 각각 찍는 패턴이 있다.
- 결과는 가장 많이 맞은 수포자들의 번호를 리턴한다. 저는 그냥 반복문을 사용해서 다 찾아보면 될거 같았습니다.
public int[] solution(int[] answers) {
int[] player1 = {1, 2, 3, 4, 5};//5
int[] player2 = {2, 1, 2, 3, 2, 4, 2, 5};// 8
int[] player3 = {3, 3, 1, 1, 2, 2, 4, 4, 5, 5};// 10
int[] answer = new int[]{0,0,0};
int maxNum = 0;
List<Integer> countNum = new ArrayList<>();
for (int i = 0; i < answers.length; i++) {
if (answers[i] == player1[i % 5]) {
answer[0]++;
}
if (answers[i] == player2[i % 8]) {
answer[1]++;
}
if (answers[i] == player3[i % 10]) {
answer[2]++;
}
}
for (int i : answer) {
if (i > maxNum) {
maxNum = i;
}
}
for (int i = 0; i < 3; i++) {
if (answer[i] == maxNum) {
countNum.add(i+1);
}
}
return countNum.stream().mapToInt(i->i).toArray();
}
고민한 점
list를 int[] 로 바꾸는게 고민됬습니다. 그러다 그냥 스트림을 사용해서 해결 했습니다.
다른사람 코드 참고할 점
확인해보니 좋아요 가장 높은거랑 거의 비슷하게 풀어 만족했습니다.