문제 보러 가기:
https://programmers.co.kr/learn/courses/30/lessons/42840
나의 풀이:
(1) 1, 2, 3번 학생의 답을 loop에 넣고 맞는지 틀린지 찾아서 점수를 매긴다. 페이지네이션 원리와 비슷하다. answers의 index을 각 학생의 점수의 길이로 나눈 나머지를 구한다. %을 사용 (2) scores라는 배열을 만들고 배열을 [n번 학생, n번 학생의 점수]로 만든다. (3) scores을 좌표정렬 해준다. (점수 높은 순, 점수가 같으면 n의 오름차순) (4) 최댓값을 구한다. (5) 최댓값과 같거나 큰 경우에만 answers에 push해준다. |
코드로 풀어보자면:
(1) 1, 2, 3번 학생의 답을 loop에 넣고 맞는지 틀린지 찾아서 점수를 매긴다. 페이지네이션 원리와 비슷하다. answers의 index을 각 학생의 점수의 길이로 나눈 나머지를 구한다. %을 사용
(2) scores라는 배열을 만들고 배열을 [n번 학생, n번 학생의 점수]로 만든다.
var scores = Array.from([1, 2, 3], x => [x++, 0]);
answers.forEach((e, i)=>{
if(e===a[i%a_len]) scores[0][1]++;
if(e===b[i%b_len]) scores[1][1]++;
if(e===c[i%c_len]) scores[2][1]++;
})
(3) scores을 좌표정렬 해준다. (점수 높은 순, 점수가 같으면 n의 오름차순)
scores.sort((a, b) => {
if (a[1] > b[1]) return b[1] - a[1];
else if (a[1] === b[1]) return a[0] - b[0];
else return b[1] - a[1];
});
(4) 최댓값을 구한다.
(5) 최댓값과 같거나 큰 경우에만 answers에 push해준다.
var max = scores[0][1];
scores.forEach(([p, s]) => {
if (s === max) answer.push(p);
});
<최종코드>
function solution(answers) {
var answer = [];
var scores = Array.from([1, 2, 3], (x) => [x++, 0]);
var a = [1, 2, 3, 4, 5];
var a_len = a.length;
var b = [2, 1, 2, 3, 2, 4, 2, 5];
var b_len = b.length;
var c = [3, 3, 1, 1, 2, 2, 4, 4, 5, 5];
var c_len = c.length;
answers.forEach((e, i) => {
if (e === a[i % a_len]) scores[0][1]++;
if (e === b[i % b_len]) scores[1][1]++;
if (e === c[i % c_len]) scores[2][1]++;
});
scores.sort((a, b) => {
if (a[1] > b[1]) return b[1] - a[1];
else if (a[1] === b[1]) return a[0] - b[0];
else return b[1] - a[1];
});
var max = scores[0][1];
scores.forEach(([p, s]) => {
if (s === max) answer.push(p);
});
return answer;
}
'코딩테스트' 카테고리의 다른 글
[코딩테스트 기본] 10진수를 2진수로 바꾸기 (Javascript) (0) | 2022.02.20 |
---|---|
[코딩테스트] 2022 KAKAO BLIND RECRUITMENT 신고 결과 받기(Javascript) (0) | 2022.02.06 |
[코딩테스트] 2018 카카오 블라인드 테스트 - [1차]비밀지도 (Javascript) (0) | 2021.11.27 |
[코딩테스트] 2019 카카오 개발자 겨울 인턴십 - 크레인 인형뽑기(Javascript) (0) | 2021.11.22 |
[코딩테스트] 2020 카카오 인턴십 - 키패드 누르기 (Javascript) (0) | 2021.11.21 |