プログラマアルゴリズム-シミュレーション試験
13081 ワード
質問する
数学は数学を放棄する人の略語である.「囚人3人組」は模擬試験で数学の問題を全部撮りたいと思っている.最初の問題から最後の問題まで、執胞子は以下の通りである.
1番捕手の撮り方:1,2,3,4,5,1,2,3,4,5...
2番捕手の撮り方:2、1、2、3、2、4、2、5、2、2、3、2、4、2、5...
3番捕手の撮り方:3,3,1,1,2,2,4,5,5,3,3,1,2,2,4,5,5...
最初の問題から最後の問題までの正解が順番に並んでいる場合は、最も多くの質問に答えた人が誰なのか、答えを並べて返すように解答関数を書いてください.
せいげんじょうけん
試験には最大10000問が含まれている.
質問の答えは1 2 3 4 5のうちの1つです.
点数が一番高い人が何人かいる場合は、戻った値を昇順に並べてください.
もんだいぶんせき
に答える
import java.util.*;
class Solution {
public int[] solution(int[] answers) {
int [] one = {1,2,3,4,5};
int[] two = {2,1,2,3,2,4,2,5};
int[] three = {3,3,1,1,2,2,4,4,5,5};
// 1,2,3의 맞춘수를 담은 배열
int[] score = new int[3];
// 1,2,3의 맞춘 수 담기
for(int i = 0; i < answers.length ; i++) {
if (answers[i] == one[i%one.length]) {
score[0]++;
}
if (answers[i] == two[i%two.length]) {
score[1]++;
}
if (answers[i] == three[i%three.length]) {
score[2]++;
}
}
// 가장 많이 맞춘 개수
int max = Arrays.stream(score).max().getAsInt();
int count = 0; // 가장 많이맞춘 사람 수
for (int i = 0; i < score.length ; i++) {
if (score[i] == max) {
count++;
}
}
// 맞춘 사람의 수대로 배열 만들고 담는다.
ArrayList<Integer> list = new ArrayList<Integer>();
if(max==score[0]) list.add(1);
if(max==score[1]) list.add(2);
if(max==score[2]) list.add(3);
int[] answer = new int[list.size()];
for(int i =0; i<answer.length; i++) {
answer[i] = list.get(i);
}
return answer;
}
}
Reference
この問題について(プログラマアルゴリズム-シミュレーション試験), 我々は、より多くの情報をここで見つけました https://velog.io/@minky/프로그래머스-알고리즘-모의고사テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol