문제
풀이
function solution(answers) {
const answer = [];
// 수포자들이 찍는 방식의 패턴(s1, s2, s3)과 채점표(score)를 각각 배열로 변환
const s1 = [1, 2, 3, 4, 5];
const s2 = [2, 1, 2, 3, 2, 4, 2, 5];
const s3 = [3, 3, 1, 1, 2, 2, 4, 4, 5, 5];
const score = [0, 0, 0];
// 배열 answers가 주어졌을 때, 문제를 맞힌 횟수를 각각 채점해 score에 입력
for (let i = 0; i < answers.length; i++) {
//i를 각 패턴의 길이만큼 나눈 나머지를 구하면 현재 위치를 구할 수 있음,
//ex) i가 14라면 answers[14] 는 14에서 5를 나눈 나머지 = 4 s1의 4번째 인덱스 번호의 값을 가져올 수가 있음.
//답을 맞출 수록 각 인원의 score를 증가시킴
if (s1[i % s1.length] === answers[i]) {
score[0]++;
}
if (s2[i % s2.length] === answers[i]) {
score[1]++;
}
if (s3[i % s3.length] === answers[i]) {
score[2]++;
}
console.log(score)
}
// 채점 결과, 가장 많은 문제를 맞힌 사람을 배열에 담아 return
const max = Math.max(...score);
for (let j = 0; j < score.length; j++) {
//만약에 가장 많이 맞춘사람이 중복된다면
if (score[j] === max) {
//answer에 그 인원의 번호를 추가함
answer.push(j + 1);
}
}
return answer;
}
각 수포자의 패턴을 s1 , s2 , s3으로 지정해주어 배열에 저장한다 .
각 수포자의 맞춘 개수를 저장해줄 score 배열을 생성하고
반복문을 이용해 맞출때마다 맞춘개수를 카운트한다!
그리고 그중 가장 높은수를 Math.max를 이용해 찾아내 주고 , 점수가 같은 사람들을 찾아내어 j+1로 찾아내어 준다(오름차순)
'알고리즘' 카테고리의 다른 글
[알고리즘]프로그래머스 LV.1 - 체육복(JS) (0) | 2024.06.21 |
---|---|
[알고리즘]프로그래머스LV.1 - 대충 만든 자판(JS) (0) | 2024.06.19 |
[알고리즘]프로그래머스LV.1 - 비밀지도 (0) | 2024.06.11 |
[알고리즘] 프로그래머스LV.0 -주사위게임3 (JS) (0) | 2024.06.06 |
[BOJ] 2581번 - 소수(JS) (0) | 2024.05.28 |