프로그래머스 - 모의고사(완전탐색)(JS)

DaiVernon·2021년 12월 11일
0

JavaScript

목록 보기
9/10
const compose = (...fns) => (arg) => fns.reduceRight((composed, fn) => fn(composed), arg);

const getData = (answers) => ({
	points: [0, 0, 0],
	result: [],
	answers,
	students: [
		[1, 2, 3, 4, 5],
		[2, 1, 2, 3, 2, 4, 2, 5],
		[3, 3, 1, 1, 2, 2, 4, 4, 5, 5],
	],
});

const compareAnswer = (data) => {
	data.answers.forEach((answer, i) => {
		if (data.students[0][i % 5] === answer) {
			data.points[0]++;
		}
		if (data.students[1][i % 8] === answer) {
			data.points[1]++;
		}
		if (data.students[2][i % 10] === answer) {
			data.points[2]++;
		}
	});
	return data;
};

const getMaxValue = (data) => ({
	...data,
	maxValue: Math.max(...data.points),
});

const compareStudent = ({ result, points, maxValue }) => {
	points.forEach((point, idx) => {
		if (point === maxValue) {
			result.push(idx + 1);
		}
	});
	return result;
};

const solution = (answers) => compose(compareStudent, getMaxValue, compareAnswer, getData)(answers);
profile
클린 코드, 클린 아키텍처

0개의 댓글