programmers.co.kr/learn/courses/30/lessons/42840
세 명의 수포자가 모의고사를 치른다. 각 수포자들은 각각 다른 패턴으로 정답을 찍는다.
모의고사의 정답지 int[] answers가 주어질 때, 정답을 가장 많이 맞춘 수포자를 배열에 담아 반환해야한다.
단, 공동 1위가 나온다면 수포자 번호의 오름차순으로 담아 반환한다.
풀이 .
import java.util.*;
class Solution {
public List<Integer> solution(int[] answers) {
ArrayList<Integer> answer = new ArrayList<>();
int[] a = {1, 2, 3, 4, 5};
int[] b = {2, 1, 2, 3, 2, 4, 2, 5};
int[] c = {3, 3, 1, 1, 2, 2, 4, 4, 5, 5};
int[] score = new int[3]; // 각 수포자들의 점수 체크
for(int i = 0; i < answers.length; i++) {
if(a[i % a.length] == answers[i]) score[0]++;
if(b[i % b.length] == answers[i]) score[1]++;
if(c[i % c.length] == answers[i]) score[2]++;
}
int max = Math.max(score[0], Math.max(score[1], score[2]));
if(max == score[0]) answer.add(1);
if(max == score[1]) answer.add(2);
if(max == score[2]) answer.add(3);
return answer;
}
}
나머지 연산을 잘 써야하는 문제.
n % m 의 결과는 0 ~ m-1만 나온다는 것을 기억하자.
i % a.length 의 결과는 0 ~ a.length-1을 반복한다. 따라서 a[]의 인덱스 범위 내에서만 반복을 돌게 된다.
'알고리즘 문제 > 프로그래머스' 카테고리의 다른 글
[PG] 카펫 JAVA (0) | 2021.01.01 |
---|---|
[PG] 소수 찾기 JAVA (0) | 2021.01.01 |
[PG] 가장 큰 수 JAVA (0) | 2020.12.31 |
[PG] K 번째 수 (0) | 2020.12.31 |
[PG] 이중 우선순위 큐 JAVA (0) | 2020.12.31 |