‘프로그래머스 코딩테스트 고득점 Kit’ 문제 입니다. 😀
문제 👉 <코딩테스트 연습 - 모의고사 | 프로그래머스>
1. 문제
1번 문제부터 마지막 문제까지의 정답이 순서대로 들은 배열 answers가 주어졌을 때, 가장 많은 문제를 맞힌 사람이 누구인지 배열에 담아 return 한다.
수포자 | 찍는 방식 |
---|---|
1번 | 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, ... |
2번 | 2, 1, 2, 3, 2, 4, 2, 5, 2, 1, 2, 3, 2, 4, 2, 5, ... |
3번 | 3, 3, 1, 1, 2, 2, 4, 4, 5, 5, 3, 3, 1, 1, 2, 2, 4, 4, 5, 5, ... |
가장 높은 점수를 받은 사람이 여럿일 경우, return하는 값을 오름차순 정렬해주세요.
2. 풀이
완전탐색
을 이용한 문제 풀이
- 모든 수포자의 찍는 방식의 패턴을 배열로 저장한다.
- 모든 문제에 대한 수포자들의 점수를 배열에 저장한다.
- 수포자들의 점수 중 최고점수를 찾는다.
- 최고점수와 일치하는 수포자의 번호를 배열에 추가 후 return한다.
3. 코드
import java.util.*;
class Solution {
public int[] solution(int[] answer) {
int[] a1 = {1, 2, 3, 4, 5};
int[] a2 = {2, 1, 2, 3, 2, 4, 2, 5};
int[] a3 = {3, 3, 1, 1, 2, 2, 4, 4, 5, 5};
int[] scores = new int[3];
// score
for (int i=0; i<answer.length; i++) {
if (answer[i] == a1[i % a1.length]) { scores[0]++; }
if (answer[i] == a2[i % a2.length]) { scores[1]++; }
if (answer[i] == a3[i % a3.length]) { scores[2]++; }
}
// find max value in array
int maxScore = Arrays.stream(scores).max().getAsInt();
// add index with maxScore
ArrayList<Integer> list = new ArrayList<>();
for (int i=0; i<scores.length; i++) {
if (maxScore == scores[i]) { list.add(i+1); }
}
// list -> array
return list.stream().mapToInt(Integer::intValue).toArray();
}
}
References
🏋🏻 개인적으로 공부한 내용을 기록하고 있습니다.
잘못된 부분이 있다면 과감하게 지적해주세요!! 🏋
'Coding Test > Programmers' 카테고리의 다른 글
[프로그래머스] 카펫 [JAVA(자바)] (0) | 2021.11.25 |
---|---|
[프로그래머스] 소수 찾기 [JAVA(자바)] (0) | 2021.11.25 |
[프로그래머스] 이중우선순위큐 [JAVA(자바)] (0) | 2021.11.25 |
댓글