[プログラマー]模擬試験
1662 ワード
質問する
出典:プログラマーコードテスト練習、模擬試験
https://programmers.co.kr/learn/courses/30/lessons/42840
問題の説明
数学は数学を放棄する人の略語である.「囚人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]
I/O例説明
I/O例#1
I/O例#2
コード#コード#
function solution(answers) {
const answer = [1,2,3];
const scores = [];
// a,b,c가 찍는 방식을 각각의 배열에 저장
const a = [1,2,3,4,5];
const b = [2,1,2,3,2,4,2,5];
const c = [3,3,1,1,2,2,4,4,5,5];
// 정답들과 비교하여 맞춘 갯수를 scores 배열에 각각 넣음
scores.push(answers.filter((el, index)=>a[index%a.length]===el).length);
scores.push(answers.filter((el, index)=>b[index%b.length]===el).length);
scores.push(answers.filter((el, index)=>c[index%c.length]===el).length);
// scores에 들어있는 점수 중 가장 높은 점수만 남겨 반환함.
// 이미 answer 배열이 오름차순 정렬되어 있으므로 filter가 반환하는 배열도 오름차순 정렬 되어있음
// 따라서 동점자가 발생해도 다시 정렬해줄 필요가 없음
return answer.filter(el=>scores[el-1]===Math.max(...scores));
}
Reference
この問題について([プログラマー]模擬試験), 我々は、より多くの情報をここで見つけました https://velog.io/@superlipbalm/프로그래머스-모의고사テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol