문제
답안
function solution(answers) {
var answer = [0,0,0];
let one = [1,2,3,4,5]
let two = [2,1,2,3,2,4,2,5];
let three = [3,3,1,1,2,2,4,4,5,5];
// answer에 맞춘 답의 갯수 넣기
for(let i = 0; i < answers.length; i++){
if(answers[i] === one[i%one.length]){
answer[0]++;
}
if(answers[i] === two[i%two.length]){
answer[1]++;
}
if(answers[i] === three[i%three.length]){
answer[2]++;
}
}
// 정답의 최댓값 구하기
let max = 0;
for(let i = 0; i < answer.length; i++){
if(max < answer[i]){
max = answer[i];
} else {
max = max;
}
}
// rank에 순위 넣기
let rank = [];
for(let i = 0; i < answer.length; i++){
if(answer[i] == max){
rank.push(i+1);
}
}
return rank;
}
참고답안
function solution(answers) {
var answer = [];
var a1 = [1, 2, 3, 4, 5];
var a2 = [2, 1, 2, 3, 2, 4, 2, 5];
var a3 = [3, 3, 1, 1, 2, 2, 4, 4, 5, 5];
var a1c = answers.filter((a,i)=> a === a1[i%a1.length]).length;
var a2c = answers.filter((a,i)=> a === a2[i%a2.length]).length;
var a3c = answers.filter((a,i)=> a === a3[i%a3.length]).length;
var max = Math.max(a1c,a2c,a3c);
if (a1c === max) {answer.push(1)};
if (a2c === max) {answer.push(2)};
if (a3c === max) {answer.push(3)};
return answer;
}
후기
filter, reduce와 같은 배열 메서드에 익숙해져야 하는데 어렵다.
value값과 index값을 이용해서 풀어야 하는 문제가 많아지고 있다.
for문을 사용하는 빈도를 줄여봐야할듯..
728x90
'자바스크립트 코딩테스트' 카테고리의 다른 글
프로그래머스 Level 1 - 없는 숫자 더하기 (Javascript) (0) | 2023.11.10 |
---|---|
프로그래머스 Level 1 - 나누어 떨어지는 숫자 배열 (Javascript) (0) | 2023.11.09 |
프로그래머스 Level 1 -음양 더하기 (Javascript) (0) | 2023.11.07 |
프로그래머스 Level 1 -서울에서 김서방 찾기 (Javascript) (0) | 2023.11.06 |
프로그래머스 Level 1 - 콜라츠 추측 (Javascript) (0) | 2023.11.05 |