模擬試験
11041 ワード
問題の説明
数学は数学を放棄する人の略語である.「囚人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つです.
点数が一番高い人が何人かいる場合は、戻った値を昇順に並べてください.
I/O例
answersreturn[1,2,3,4,5][1][1,3,2,4,2][1,2,3]
I/O例説明
I/O例#1
I/O例#2
に答える
3人の生徒の撮影方法をそれぞれアレイに格納する.
正解の個数によって正解や撮り方が正しいかどうかを判断し、正しければ生徒1人あたりの点数が増える.
点数の最大値を求めた後、どれだけの学生の点数が最大値と等しいかを確認し、countを増やした.
countで答えを入れる配列を初期化しました.
そして最大値と学生の正解個数を比較し,学生の番号を昇順に並べた.
コード#コード#
class Solution {
public int[] solution(int[] answers) {
int[] answer;
int[] a = {1, 2, 3, 4, 5};
int[] b = {2, 1, 2, 3, 2, 4, 2, 5};
int[] c = {3, 3, 1, 1, 2, 2, 4, 4, 5, 5};
int scoreA = 0, scoreB = 0, scoreC = 0;
//점수 계산
for (int i = 0; i < answers.length; i++) {
if (a[i % a.length] == answers[i]) scoreA++;
if (b[i % b.length] == answers[i]) scoreB++;
if (c[i % c.length] == answers[i]) scoreC++;
}
//배열 개수 세기
int count = 0, index = 0;
int max = Math.max(scoreA, scoreB);
if (max < cc) max = cc;
if (max == scoreA) {
count++;
}
if (max == scoreB) {
count++;
}
if (max == scoreC) {
count++;
}
//배열 생성
answer = new int[count];
if (max == scoreA) {
answer[index++] = 1;
}
if (max == scoreB) {
answer[index++] = 2;
}
if (max == scoreC) {
answer[index++] = 3;
}
return answer;
}
}
Reference
この問題について(模擬試験), 我々は、より多くの情報をここで見つけました https://velog.io/@ffwang/Programmers-모의고사テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol