문제 설명
https://school.programmers.co.kr/learn/courses/30/lessons/42840

제한 사항

입출력 예

풀이
import java.util.Arrays;
import java.util.stream.IntStream;
class Solution {
public int[] solution(int[] answers) {
int[] result = new int[3];
int[] p1 = new int[] { 1, 2, 3, 4, 5 };
int[] p2 = new int[] { 2, 1, 2, 3, 2, 4, 2, 5 };
int[] p3 = new int[] { 3, 3, 1, 1, 2, 2, 4, 4, 5, 5 };
for (int i = 0; i < answers.length; i++) {
if (answers[i] == p1[i % p1.length]) result[0]++;
if (answers[i] == p2[i % p2.length]) result[1]++;
if (answers[i] == p3[i % p3.length]) result[2]++;
}
int max = Arrays.stream(result).max().getAsInt();
return IntStream.range(1, 4).filter(i -> result[i - 1] == max).toArray();
}
}
후기
먼저 패턴을 미리 배열에 입력해 놓고 반복할 때 각 배열의 인덱스 값을 초과하지 않도록 % 연산자를 통해서 인덱스 값을 잘 조절해주면 쉽게 풀 수 있다. 한 번에 풀 수 있었는데 p3부분을 p2라고 쓰는 바람에 어디가 틀렸는지 헤맸다... 잘 통과가 안 될 경우 일단 오타가 있는지부터 확인해 보자.
'코딩테스트 (프로그래머스) > Java' 카테고리의 다른 글
| [프로그래머스][JAVA][Lv. 1] 기사단원의 무기 (0) | 2023.07.18 |
|---|---|
| [프로그래머스][JAVA][Lv. 2] 연속된 부분 수열의 합 (0) | 2023.07.17 |
| [프로그래머스][JAVA][Lv. 2] 두 원 사이의 정수 쌍 (0) | 2023.07.17 |
| [프로그래머스][JAVA][Lv. 1] 체육복 (0) | 2023.07.16 |
| [프로그래머스][JAVA][Lv. 1] 실패율 (0) | 2023.07.16 |