Back to all posts
모의고사
Written by ppotatoG & Posted on November 21st, 2021
처음 제출한 답
답을 늘린건, 끝 값에 도달했을 때, 처음 값으로 어떻게 가야할지 몰라서...
뭔가 잘못된것 같긴 하지만 이악물고 끝까지 해냈다
function solution(arr) {const obj = {std1 : [1, 2, 3, 4, 5],std2 : [2, 1, 2, 3, 2, 4, 2, 5],std3 : [3, 3, 1, 1, 2, 2, 4, 4, 5, 5]}const values = Object.values(obj);// 총 문제 길이에 맞춰 수포자의 답 늘리기for(let i = 0; i < values.length; i++){const num1 = Math.ceil((arr.length - values[i].length) / values[i].length);if(values[i].length < arr.length) {for(let j = 0; j < num1; j++){values[i].push(Object.values(obj)[i]);;}}}for(let i = 0; i < values.length; i++){values[i] = values[i].flat();for(let k = 0; k < values[i].length; k++){if(typeof(values[i][k]) === 'object'){values[i].splice(k, 1);k--;}}}let count = [0, 0, 0];// 학생답안과 모범답안 비교for(let i = 0; i < values.length; i++){for(let k = 0; k < arr.length; k++){if(values[i][k] === arr[k]){count[i] ++;}}}// 맞힌 수로 정렬count = count.map((el, idx) => el = [idx + 1, el]).sort((a, b) => {if (a[1] > b[1]) return 1;else if (a[1] < b[1]) return 0;});// 조건에 맞춰 반환if(count[0][1] === count[1][1]){if(count[1][1] === count[2][1]) {return [count[0][0], count[1][0], count[2][0]];}else {return [count[0], count[1]];}}else return [count[0][0]];}
두번째
js 연산자 중 나머지연산자
는 몫을 반환하는데, 이것을 활용 해 수포자 답을 확인할 수 있음!
아직도 코드가 좀 많이 더럽지만.. 통과한게 어디야!!
function solution(answer) {const obj = {std1 : [1, 2, 3, 4, 5],std2 : [2, 1, 2, 3, 2, 4, 2, 5],std3 : [3, 3, 1, 1, 2, 2, 4, 4, 5, 5]}let count = [0, 0, 0];for(var i = 0; i < answer.length; i++){if(answer[i] === obj.std1[i % 5]) count[0]++;if(answer[i] === obj.std2[i % 8]) count[1]++;if(answer[i] === obj.std3[i % 10]) count[2]++;}count = count.map((val, idx) => {return [idx + 1, val];}).sort((a, b) => {if (a[1] < b[1]) return 1;else if (a[1] > b[1]) return -1;else return 0;});if(count[0][1] === count[1][1]){if(count[1][1] === count[2][1]) return [count[0][0], count[1][0], count[2][0]];else return [count[0][0], count[1][0]];}else return [count[0][0]];}