728x90
다른 분 코드 보면서 이해하고 배운 내용을 작성해보자.
문제
정답 처리된 코드
function solution(answers) {
let pattern = [
[1,2,3,4,5],
[2,1,2,3,2,4,2,5],
[3,3,1,1,2,2,4,4,5,5]
];
let count = [0, 0, 0];
for(let i in answers){
if(pattern[0][i%5] === answers[i]){
count[0]++;
}
if(pattern[1][i%8] === answers[i]){
count[1]++;
}
if(pattern[2][i%10] === answers[i]){
count[2]++;
}
}
let max = Math.max(...count);
let answer=[];
for(let x in count){
if(count[x] === max){
answer.push(Number(x)+1);
}
}
return answer;
}
문제 이해
1) pattern 변수에 수포자 3명이 찍은 답을 할당한다.
2) 정답이 든 answers 배열과 수포자 3명의 찍은 답 배열을 비교하여 답을 맞힌 수포자의 수를 확인하기 위해 count 변수를 만든다.
3) 정답이 든 answers 배열의 길이만큼 정답과 수포자들의 답을 비교한다.
4) 정답 answers 길이와 수포자 각각의 찍은 답은 길이가 다르고, answers 길이가 수포자가 찍은 답의 길이보다 길 때를 생각하여 pattern 인덱스를 작성해야 한다. ( i % 수포자 찍은 답 길이 )
이해가 잘 안되서 answers = [1, 3, 2, 4, 2, 1, 2, 3]; 값으로하여 생각해보았다.
5) 정답과 수포자가 찍은 답이 같을 때 count를 1씩 증가시켜서 count에서 가장 큰 값을 찾는다.
6) count 에서 가장 큰 값을 찾은 뒤 for 문으로 count 배열과 max 값을 비교해서 answer에 push 하여 리턴한다.
출처: programmers.co.kr/learn/courses/30/lessons/42840?language=javascript
'알고리즘, 자료구조 > 프로그래머스' 카테고리의 다른 글
[프로그래머스/javascript/카카오인턴십] 크레인 인형뽑기 게임 (0) | 2021.04.06 |
---|---|
[프로그래머스/javascript] 수박수박수박수박수박수? (0) | 2021.04.05 |
[프로그래머스/javascript] 서울에서 김서방 찾기 (0) | 2021.04.05 |
[프로그래머스/javascript] 두 정수 사이의 합 문제 풀기 (0) | 2021.04.05 |
[프로그래머스/javascript] 2016년 문제 풀기 (0) | 2021.04.05 |