코딩테스트/프로그래머스
[프로그래머스 Lv.1] 모의고사 .java
머밍
2024. 8. 10. 21:00
https://school.programmers.co.kr/learn/courses/30/lessons/42840
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
문제 분석
패턴 2차원배열
- 정답 패턴 길이 <= 문제 수: 문제 수만큼 검사하기
- 정답 패턴 길이 > 문제 수: 남은 정답을 다시 패턴의 처음부터 비교해야함
가장 높은 점수를 획득한 수포자의 번호를 오름차순으로 구하기
-> 최댓값을 먼저 구하고 이 점수와 일치하는 수포자의 번호 리스트에 저장
import java.util.ArrayList;
import java.util.Arrays;
class Solution {
public int[] solution(int[] answers) {
int[][] pat = {
{1,2,3,4,5},
{2,1,2,3,2,4,2,5},
{3,3,1,1,2,2,4,4,5,5}
};
int[] score = new int[3];
for(int i = 0; i < answers.length; i++) {
for(int j = 0; j < 3; j++){
if(answers[i] == pat[j][i % pat[j].length]){
score[j]++;
}
}
}
int max = Arrays.stream(score).max().getAsInt(); //최댓값 찾기
ArrayList<Integer> list = new ArrayList<>();
//가장 높은 점수를 가진 수포자들의 번호를 찾아 리스트에 담기
for(int i = 0; i < score.length; i++) {
if(score[i] == max){
list.add(i+1);
}
}
return list.stream().mapToInt(i -> i).toArray();//리스트를 배열로
}
}