模擬試験
12750 ワード
問題の説明
数学は数学を放棄する人の略語である.「囚人3人組」は模擬試験で数学の問題を全部撮りたいと思っている.最初の問題から最後の問題まで、執胞子は以下の通りである.
1番捕手の撮り方:1,2,3,4,5,1,2,3,4,5...
2番捕手の撮り方:2、1、2、3、2、4、2、5、2、1、2...
3番捕手の撮り方:3,3,1,1,2,2,4,5,5,3,3...
最初の問題から最後の問題までの正解が順番に並んでいる場合は、最も多くの質問に答えられるように解答関数を書いてください.
せいげんじょうけん
I/O例
answerreturn[1,2,3,4,5][1][1,3,2,4,2][1,2,3]
I/O例説明
I/O例#1
-見張り人1はすべての質問に答えた.
-小胞子2はすべての問題を間違えた.
-逮捕者3はすべての問題を間違えた.
だから一番多くの質問に答えた人は水泡子です.
I/O例#2
-誰もが2つの問題に答えた.
きほんコード
class Solution {
public int[] solution(int[] answers) {
int[] answer = {};
return answer;
}
}
正しいコード
class Solution {
public int[] solution(int[] answers) {
int[] answer;
int[] a = new int[]{1,2,3,4,5};
int[] b = new int[]{2,1,2,3,2,4,2,5};
int[] c = new int[]{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] == a[i%a.length]) score[0]++;
if(answers[i] == b[i%b.length]) score[1]++;
if(answers[i] == c[i%c.length]) score[2]++;
}
int max = 0;
for(int i=0; i<3; i++){
if(score[i] > max){
max = score[i];
}
}
int cnt = 0;
for(int i=0; i<3; i++){
if(score[i] == max){
cnt++;
}
}
answer = new int[cnt];
int idx = 0;
for(int i=0; i<3; i++){
if(score[i] == max) {
answer[idx++] = i+1;
}
}
return answer;
}
}
問題を解く
a,b,cを並べた後、scoreに並べて、小胞子の答えを保存します.a[i%a.length]が答え[i]に等しい場合、score[0]++が与えられる.次にfor文を回して(max)得点が最も高いことを示し,(cnt)得点が最も高い人数を求める.点数が一番高い人を答えに入れてfor文を回し、score[i]=maxで[idx+]=i+1と答え、点数が高い人が多い場合は昇順順で並べ替える方法で記入します.
Reference
この問題について(模擬試験), 我々は、より多くの情報をここで見つけました https://velog.io/@xodus05/0415-모의고사テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol