[프로그래머스/LV1/자바스크립트] 모의고사
2023. 6. 14. 12:18
문제
https://school.programmers.co.kr/learn/courses/30/lessons/42840?language=javascript
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
코드
function solution(answers) {
var supo1 = [1, 2, 3, 4, 5];
var supo2 = [2, 1, 2, 3, 2, 4, 2, 5];
var supo3 = [3, 3, 1, 1, 2, 2, 4, 4, 5, 5];
var check = [0, 0, 0];
for (var i = 0; i < answers.length; i++) {
if (answers[i] === supo1[i % 5]) {
check[0] += 1;
}
if (answers[i] === supo2[i % 8]) {
check[1] += 1;
}
if (answers[i] === supo3[i % 10]) {
check[2] += 1;
}
}
var answer = check.map((item, idx) => {
if(item === Math.max(...check)) return idx + 1;
else return -1;
}).filter((el) => el !== -1);
return answer;
}
메모
각 수포자들의 정답을 맞춘 개수를 담아놓은 check 배열에서 가장 많은 문제를 맞춘 수포자를 찾아낼 때
map함수와 filter함수를 사용했다.
map함수를 통해 우선 check 배열에서 가장 큰 값과 같은 값을 가지는 인덱스들을 걸러내고, 그렇지 않다면 -1로 바꾼다.
이때 배열의 인덱스와 수포자를 구분할 때 1의 차이가 생기기 때문에 1을 더해줬다.
(ex. [1, 3, 3] => [-1, 2, 3])
그리고 filter함수를 사용해서 -1이 아닌 값만 걸러내준다.
(ex. [-1, 2, 3] => [2, 3])
인덱스를 사용해 문제를 풀었기 때문에 오름차순으로 정렬해줄 필요는 없다.
'코딩테스트 > 연습문제' 카테고리의 다른 글
[프로그래머스/Lv1/자바스크립트] 과일 장수 (0) | 2023.06.13 |
---|---|
[프로그래머스/Lv1/자바스크립트] 명예의 전당 (1) (0) | 2023.06.12 |
[프로그래머스/Lv1/자바스크립트] 폰켓몬 (0) | 2023.06.09 |
[프로그래머스/Lv1/자바스크립트] 2016년 (0) | 2023.06.08 |
[프로그래머스/Lv1/자바스크립트] 추억 점수 (0) | 2023.06.07 |