Link
문제
풀이
(1)
function solution(answers) {
let answer = [0, 0, 0];
let len = answers.length;
let one = '12345'.repeat(Math.ceil(len / 5)).split('').map(Number);
let two = '21232425'.repeat(Math.ceil(len / 8)).split('').map(Number);
let three = '3311224455'.repeat(Math.ceil(len / 10)).split('').map(Number);
for (let i = 0; i < len; i++) {
let a = answers[i];
if (one[i] === a) answer[0] += 1;
if (two[i] === a) answer[1] += 1;
if (three[i] === a) answer[2] += 1;
}
let max = Math.max(...answer);
return answer.map((m, i) => (m === max ? i + 1 : null)).filter(v => v !== null);
}
(2)
function solution(answers) {
const patterns = [
[1, 2, 3, 4, 5],
[2, 1, 2, 3, 2, 4, 2, 5],
[3, 3, 1, 1, 2, 2, 4, 4, 5, 5]
];
const scores = [0, 0, 0];
answers.forEach((answer, index) => {
patterns.forEach((pattern, person) => {
if (answer === pattern[index % pattern.length]) {
scores[person]++;
}
});
});
const maxScore = Math.max(...scores);
return scores.reduce((result, score, index) => {
if (score === maxScore) result.push(index + 1);
return result;
}, []);
}
(3)
function solution(answers) {
const patterns = [
[1, 2, 3, 4, 5],
[2, 1, 2, 3, 2, 4, 2, 5],
[3, 3, 1, 1, 2, 2, 4, 4, 5, 5]
];
const scores = [0, 0, 0];
answers.forEach((answer, index) => {
if (patterns[0][index % patterns[0].length] === answer) scores[0] += 1;
if (patterns[1][index % patterns[1].length] === answer) scores[1] += 1;
if (patterns[2][index % patterns[2].length] === answer) scores[2] += 1;
});
const maxScore = Math.max(...scores);
return scores.reduce((result, score, index) => {
if (score === maxScore) result.push(index + 1);
return result;
}, []);
}
'알고리즘 > 문제' 카테고리의 다른 글
[프로그래머스 | Lv. 1 | JavaScript] 소수 찾기 (1) | 2025.02.08 |
---|---|
[프로그래머스 | Lv. 1 | JavaScript] 과일 장수 (0) | 2025.02.06 |
[프로그래머스 | Lv. 1 | JavaScript] 2016년 (1) | 2025.02.04 |
[프로그래머스 | Lv. 1 | JavaScript] 기사단원의 무기 (1) | 2025.02.03 |
[프로그래머스 | Lv. 1 | JavaScript] 폰켓몬 (1) | 2025.02.02 |
※ 쿠팡 파트너스 활동을 통해 일정액의 수수료를 제공받을 수 있습니다.