📌 문제
https://school.programmers.co.kr/learn/courses/30/lessons/42840
💻 코드
package programmers;
import java.util.Arrays;
public class Lv1_220705_2 { // 모의고사
// 도움 코드
public static void main(String[] args) {
int[] answer = {1, 3, 2, 4, 2};
System.out.println(Arrays.toString(solution(answer)));
}
public static int[] solution(int[] answers) {
int[] answer; // 1
int[] first = {1, 2, 3, 4, 5};
int[] second = {2, 1, 2, 3, 2, 4, 2, 5};
int[] third = {3, 3, 1, 1, 2, 2, 4, 4, 5, 5};
int[] score = new int[3];
for (int i = 0; i < answers.length; i++) { // 2
if (first[i % first.length] == answers[i]) {
score[0]++;
}
if (second[i % second.length] == answers[i]) {
score[1]++;
}
if (third[i % third.length] == answers[i]) {
score[2]++;
}
}
int max = 0; // 3 가장 높은 점수 구하기
for (int k : score) {
if (k > max) {
max = k;
}
}
int maxCount = 0; // 4 가장 높은 점수를 받은 사람 구하기
for (int j : score) {
if (j == max) {
maxCount++;
}
}
answer = new int[maxCount]; // 5
int index = 0;
for (int i = 0; i < score.length; i++) {
if (score[i] == max) {
answer[index++] = i + 1;
}
}
return answer;
}
}
📑 풀이
- 문제에 수포자 3명이라고 적혀있으므로 각각 배열을 만들어 배열에 똑같은 숫자가 반복하기 전까지 숫자를 저장한다.
- 크기가 3인 배열을 하나 생성하고 몇 개의 점수가 맞았는지 각 인덱스에 저장.
- max라는 변수를 생성하고 저장한 값 중에 가장 큰 수 찾아 max에 저장
- maxCount 변수를 생성하고 가장 점수가 높은 사람 인덱스와 동일한 값을 찾기 위해 max 값과 같은지 찾고 값이 같으면 maxCount++
- 리턴할 배열에 maxCount 만큼 크기 저장하고 동일한 값을 가지고 있으면 리턴할 배열에 index++ 하고 값 대입 (i + 1)
'Programmers' 카테고리의 다른 글
[Java] 프로그래머스 : 숫자 문자열과 영단어 (0) | 2023.05.15 |
---|---|
[Java] 프로그래머스 : 키패드 누르기 (0) | 2022.07.12 |
[Java] 프로그래머스 : 두개 뽑아서 더하기 (0) | 2022.07.01 |
[Java] 프로그래머스 : 주식가격 (0) | 2022.06.09 |
[Java] 프로그래머스 : K번째 수 (0) | 2022.06.03 |