코딩 테스트 준비
수포자 문제(완전 탐색) Level 1
개발쉐발
2022. 10. 6. 14:29
728x90
반응형
문제 설명
수포자는 수학을 포기한 사람의 준말입니다. 수포자 삼인방은 모의고사에 수학 문제를 전부 찍으려 합니다. 수포자는 1번 문제부터 마지막 문제까지 다음과 같이 찍습니다.
1번 수포자가 찍는 방식: 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, ...
2번 수포자가 찍는 방식: 2, 1, 2, 3, 2, 4, 2, 5, 2, 1, 2, 3, 2, 4, 2, 5, ...
3번 수포자가 찍는 방식: 3, 3, 1, 1, 2, 2, 4, 4, 5, 5, 3, 3, 1, 1, 2, 2, 4, 4, 5, 5, ...
1번 문제부터 마지막 문제까지의 정답이 순서대로 들은 배열 answers가 주어졌을 때, 가장 많은 문제를 맞힌 사람이 누구인지 배열에 담아 return 하도록 solution 함수를 작성해주세요.
제한 조건
- 시험은 최대 10,000 문제로 구성되어있습니다.
- 문제의 정답은 1, 2, 3, 4, 5중 하나입니다.
- 가장 높은 점수를 받은 사람이 여럿일 경우, return하는 값을 오름차순 정렬해주세요.
내가 푼 답안
function solution(answers){
var answer = [];
var su_1 = [1, 2, 3, 4, 5];
var su_2 = [2, 1, 2, 3, 2, 4, 2, 5];
var su_3 = [3, 3, 1, 1, 2, 2, 4, 4, 5, 5];
// 문제 형식을 미리 지정
var result = [0, 0, 0];
// 문제 맞힌 수를 위한 값
for(let i = 0; i <= answers.length; i++){
if(su_1[i%5] == answers[i]) result[0]++;
if(su_2[i%8] == answers[i]) result[1]++;
if(su_3[i%10] == answers[i]) result[2]++;
}
// 길이마다 반복해서 값 증가
const maxValue = Math.max(...result);
let index = 0;
for (let i = 0; i < 3; i++) {
if (maxValue === result[i]) {
answer[index] = i + 1;
index++;
}
}
// i와 index가 같이 증가하며 가장 높은 값을 가진 숫자가 첫번째에 오게 if 문으로 설정함.
return answer;
}
프로그래머스 답안
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;
// 이렇게 하면 filter로 맞는 값들만 걸러지고 그 배열의 길이를 구하는 것
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 함수 이해를 위한 정리
const numbers = [1];
numbers.filter((number, index, source) => {
// number: 요소값
// index: source에서 요소의 index
// source: 순회하는 대상
console.log(number); // 1
console.log(index); // 0
console.log(source); // [1]
return number > 3;
});
https://7942yongdae.tistory.com/49
Javascript - Array filter 사용법
이번에는 Javascript의 array가 가진 filter 함수의 정의와 사용법 더불어 활용법에 대해 이야기해보려고 합니다. array의 함수 중 가장 많이 쓰이는 함수 중 3 대장이라고 할 수 있는 것이 map, filter, reduc
7942yongdae.tistory.com
728x90
반응형