min
프로그래머스 모의고사 자바스크립트 본문
<문제>
https://school.programmers.co.kr/learn/courses/30/lessons/12917
<나의 풀이>
function solution(answers) {
const one = [1,2,3,4,5]
const two = [2, 1, 2, 3, 2, 4, 2, 5]
const thr = [3, 3, 1, 1, 2, 2, 4, 4, 5, 5]
const answer = [0,0,0]
const result = []
for(i in answers) {
if(answers[i] === one[i % one.length]) answer[0]++;
if(answers[i] === two[i % two.length]) answer[1]++;
if(answers[i] === thr[i % thr.length]) answer[2]++;
}
for(i in answer) {
if (answer[i] === Math.max(...answer)) result.push(Number(i)+1)
}
return result;
}
<다른 사람의 풀이>
const solution = (answer) => {
let one = [1, 2, 3, 4, 5]; //5
let two = [2, 1, 2, 3, 2, 4, 2, 5]; //8
let three = [3, 3, 1, 1, 2, 2, 4, 4, 5, 5]; //10
let result = [];
const correct = (arr) => {
return answer.filter((e, i) => e === arr[i % arr.length]).length;
};
let ans = [correct(one), correct(two), correct(three)]; // [5,0,0 ]
//검사를 한다.
//for무늘 돌면서 각 수가 최댓값인지를 확인한다.
//만약에 최댓값이라면 그 수가 들어있는 배열에 인덱스를 answer에 담아서 출력을 한다.
let max = Math.max(...ans);
for (let i = 0; i < ans.length; i++) {
if (ans[i] === max) result.push(i + 1);
}
return result;
};
이 풀이에서는 함수로 반복되는 작업들을 처리해서 굉장히 효율적인 코드를 작성해서 가져왔다.
나는 반복문에서 조건문으로 처리를 했는데 지금 생각해보면 함수로 처리하는 것이 더 좋을 거 같다는 생각이 들었다.
'알고리즘' 카테고리의 다른 글
프로그래머스 신규 아이디 추천 자바스크립트 (0) | 2023.06.19 |
---|---|
프로그래머스 숫자 문자열과 영단어 (1) | 2023.06.19 |
프로그래머스 시저암호 자바스크립트 (0) | 2023.06.19 |
프로그래머스 자릿수 더하기 자바스크립트 (0) | 2023.06.18 |
프로그래머스 이상한 문자 만들기 자바스크립트 (0) | 2023.06.17 |