반응형
🔐 문제 설명
https://school.programmers.co.kr/learn/courses/30/lessons/42840
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
🔐 문제 분석
- 수포자들의 정답 패턴을 배열로 만든다.
- 주어진 문제(answers)를 순차접근하여 문제의 답과 수포자들의 답이 일치하는지 판단한 후, 일치할 경우 점수를 +1 시킨다.
(주어진 문제가 수포자들의 정답 패턴보다 길어질 경우를 대비하여 나머지 연산으로 인덱스를 계산한다.) - 최고점을 구한 후, 최고점과 동일한 점수의 수포자를 답에 넣어 반환한다.
🔐 문제 풀이
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
class Solution {
public int[] solution(int[] answers) {
// 수포자들의 답 패턴과 점수 초기화
int[] student1 = {1, 2, 3, 4, 5};
int[] student2 = {2, 1, 2, 3, 2, 4, 2, 5};
int[] student3 = {3, 3, 1, 1, 2, 2, 4, 4, 5, 5};
int[] score = new int[3];
// 문제 진행
for (int i = 0; i < answers.length; i++) {
if (answers[i] == student1[i % student1.length]) {
score[0]++;
}
if (answers[i] == student2[i % student2.length]) {
score[1]++;
}
if (answers[i] == student3[i % student3.length]) {
score[2]++;
}
}
// 최고점과 최고점인 학생 반환
List<Integer> list = new ArrayList<>();
int maxScore = Arrays.stream(score).max().getAsInt();
for (int i = 0; i < 3; i++) {
if (score[i] == maxScore) {
list.add(i + 1);
}
}
return list.stream().mapToInt(i -> i).toArray();
}
}
반응형
'Algorithm' 카테고리의 다른 글
[프로그래머스] Lv1. 카드 뭉치 (0) | 2023.06.12 |
---|---|
[프로그래머스] Lv1. 푸드 파이트 대회 (0) | 2023.06.12 |
[프로그래머스] Lv1. 과일 장수 (0) | 2023.06.12 |
[프로그래머스] Lv1. 콜라 문제 (0) | 2023.06.11 |
[프로그래머스] Lv1. 폰켓몬 (0) | 2023.06.10 |