[매일코딩-프로그래머스] 모의고사 03
2021. 11. 29. 10:42ㆍWEB Dev/CordingTEST
728x90
출근하면서 이 문제를 잠깐 생각했는데,
배열의 인덱스마다 비교해야 하니까 인덱스별로 비교할 수 있는 배열 메소드를 찾아보기로 했다.
배열의 내장 메소드들
https://opentutorials.org/module/3989/26231
일단 인덱스를 사용해서 쓸 수 있는 여러가지 메소드 들 중에
forEach나 map을 쓰는게 가장 적절한 것 같았다.
forEach보다 map을 더 많이 쓰고 권장하기때문에 map()함수로 만들어보려고 한다.
function solution(answers) {
var check = [];
var one = [1, 2, 3, 4, 5, 1, 2, 3, 4, 5];
var two = [2, 1, 2, 3, 2, 4, 2, 5, 2, 1];
var three = [3, 3, 1, 1, 2, 2, 4, 4, 5, 5];
var checkArr = answers.map((a, i)=>{
check.push(a==one[i]);
return check;
});
return check;
}
우선 answers랑 비교해야하는데 student의 답이 학생1은 5개씩 반복, 학생2는 8개씩 반복, 학생3은 10개씩 반복하기 때문에 모든 학생의 반복 배열을 10개씩으로 맞췄다. 그리고 기존에 객체로 만들었던 것도 개별 변수로 나눠서 할당했다.
check라는 빈 배열을 선언하고 check에 push 메소드로 map의 인자로 돌아가는 answers의 원소와 학생 one의 i를 비교해 집어 넣어준다.
테스트를 위해 answer 대신 check를 반환해주면 테스트 1에서는 [true,true,true,true,true] 라는 결과값을 준다. 모두 맞았다는 뜻이다.
그러면 이것을 각각 돌려서 학생마다 true가 몇 개인지 알아내고 학생이름을 정렬해주면 될 거 같다.
그래서 오늘도 여기까지 만들었다ㅠㅠ
function solution(answers) {
var check = [];
var student = {
1: [1, 2, 3, 4, 5, 1, 2, 3, 4, 5],
2: [2, 1, 2, 3, 2, 4, 2, 5, 2, 1],
3: [3, 3, 1, 1, 2, 2, 4, 4, 5, 5],
};
answers.map((a, i)=>{
check.push(a == Object.values(student)[0][i]);
return check;
})
var oneChk = check.filter(function(element){
return element==true;})
return oneChk.length;
}
내가 너무 복잡하게 생각하는거 같기도 하고.. 내일 해결 못하면 질문하기에서 힌트를 좀 찾아야겠다....!!
728x90
'WEB Dev > CordingTEST' 카테고리의 다른 글
[매일코딩-프로그래머스] 모의고사 05 (0) | 2021.12.08 |
---|---|
[매일코딩-프로그래머스] 모의고사 04 (0) | 2021.11.30 |
[매일코딩-프로그래머스] 모의고사 02 (0) | 2021.11.26 |
[매일코딩-프로그래머스] 모의고사 01 (0) | 2021.11.25 |
[매일코딩-프로그래머스] 2016년 03 (0) | 2021.11.24 |