プログラマー完全ナビゲーション1シミュレーション試験
11665 ワード
問題の説明
数学は数学を放棄する人の略語である.「囚人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...
最初の問題から最後の問題までの正解が順番に並んでいる場合は、最も多くの質問に答えた人が誰なのか、答えを並べて返すように解答関数を書いてください.
せいげんじょうけん
I/O例
answersreturn[1,2,3,4,5][1][1,3,2,4,2][1,2,3]
に答える
class Solution {
public int[] solution(int[] answers) {
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 c1=0;
int c2=0;
int c3=0;
for(int i = 0; i<answers.length;i++){
int a = answers[i];
if (a1[(i%5)]==a) c1++;
if (a2[(i%8)]==a) c2++;
if (a3[(i%10)]==a) c3++;
}
int[] answer = {};
if(c1==c2&&c1==c3) return new int[] {1,2,3};
if(c1>c2&&c1>c3) return new int[] {1};
if(c2>c1&&c2>c3) return new int[] {2};
if(c3>c2&&c3>c1) return new int[] {3};
if(c1==c2&&c1>c3) return new int[] {1,2};
if(c1==c3&&c1>c2) return new int[] {1,3};
if(c2==c3&&c2>c1) return new int[] {2,3};
return answer;
}
}
anwersの長さはわかりませんが、最終的にはすべての学生が同じルールで答えを書くので、最小長の配列を形成し、長さに応じて正解の長さを区切って、残りをインデックスに設定します.最後の和弦が汚い.どうすれば簡単に交換できますか?最値を求めてforループに変換し、アレイを再作成すれば良いと思います.
Reference
この問題について(プログラマー完全ナビゲーション1シミュレーション試験), 我々は、より多くの情報をここで見つけました https://velog.io/@kiki3700/프로그래머스-완전탐색-1-모의고사テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol