완전탐색
모의고사 - Level 1
https://school.programmers.co.kr/learn/courses/30/lessons/42840
풀이
import java.util.stream.IntStream;
class Solution {
private static final int[][] RULES = {
{ 1, 2, 3, 4, 5 },
{ 2, 1, 2, 3, 2, 4, 2, 5 },
{ 3, 3, 1, 1, 2, 2, 4, 4, 5, 5 }
};
private int getPicked(int person, int problem) {
int[] rule = RULES[person];
int idx = problem % rule.length; // 규칙보다 문제수가 많을 경우 규칙이 문제수에 도달했을 때 다시 idx를 0으로 보내주기 위함
return rule[idx];
}
public int[] solution(int[] answers) {
int[] corrects = new int[3]; // 정답 개수
int max = 0;
for (int problem = 0; problem < answers.length; problem++) {
int answer = answers[problem];
for (int person = 0; person < RULES.length; person++) {
int picked = getPicked(person, problem);
if (answer == picked) {
if (++corrects[person] > max) {
max = corrects[person];
}
}
}
}
final int maxCorrects = max;
return IntStream.range(0, 3) // 0~2까지의 정수 스트림 생성(수포자 3명)
.filter(i -> corrects[i] == maxCorrects) // 조건에 만족하는 요소만 필터링
.map(i -> i + 1) // 필터링된 인덱스에 1을 더하여 1부터 시작하는 수포자 번호로 매핑(배열은 0부터 시작하므로)
.toArray(); // 스트림의 요소들을 배열로 변환하여 반환
}
}
IntStream 이용하기 (java.util.stream.IntStream)
ㄴ IntStream은 기본적인 int 값을 스트림 형태로 다룰 수 있게 해주는 Java 스트림이다.
- filter:
- 기능: 주어진 조건에 따라 요소를 필터링합니다.
- 인자: predicate는 조건을 나타내는 함수형 인터페이스로, true를 반환하는 요소만 유지합니다.
- map:
- 기능: 각 요소를 특정 함수에 따라 변환합니다.
- 인자: mapper는 각 요소에 대해 적용되는 함수로, 각 요소를 변환한 값을 반환합니다.
- toArray:
- 기능: 스트림의 요소를 배열로 변환합니다.
- 반환값: 변환된 배열
'코딩테스트 > programming_JAVA' 카테고리의 다른 글
[Java] 프로그래머스_67257 : 수식 최대화 (2) | 2023.11.20 |
---|---|
[Java] 프로그래머스_42842 : 카펫 (0) | 2023.11.20 |
[Java] 프로그래머스_181858 : 무작위로 K개의 수 뽑기 (0) | 2023.09.12 |
[Java] 프로그래머스_12935 : 제일 작은 수 제거하기 (0) | 2023.09.11 |
[Java] 프로그래머스_120868 : 삼각형의 완성조건 (2) (0) | 2023.09.09 |