
https://school.programmers.co.kr/learn/courses/30/lessons/42840
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr

🤔 문제풀이
풀이
수포자의 케이스를 정의하고 각수포자별로맞은 개수를 카운팅하려했다. 정답의 길이가 길어서 반복되는 패턴을 어떻게 찾을까 고민했는데 각 수포자 케이스의 길이만큼 나눈 나머지가 결국 반복되는 패턴임으로 케이스를 나눈 index로 처리했다. 크게 눈에띄는 다른풀이방법은 없었다.
function solution(answers) {
const answer = [];
// 수포자 케이스 분리
let a1 = [1, 2, 3, 4, 5];
let b1 = [2, 1, 2, 3, 2, 4, 2, 5];
let c1 = [3, 3, 1, 1, 2, 2, 4, 4, 5, 5];
//수포자 정보 객체화
const obj = { 1: 0, 2: 0, 3: 0 };
//정답을 루프로 돌면서 정답하나하나가 수포자 케이스에 맞으면 카운팅
answers.forEach((a, idx) => {
a1[idx % a1.length] === a && obj['1']++;
b1[idx % b1.length] === a && obj['2']++;
c1[idx % c1.length] === a && obj['3']++;
});
console.log(obj);
//최고점수확인
let max = Math.max(...Object.values(obj));
//최고점수자가 누구누구인지 객체에서 확인
return Object.keys(obj)
.filter((k) => obj[k] === max)
.map((v) => +v);
}'알고리즘 > 프로그래머스' 카테고리의 다른 글
| [프로그래머스 Level2][Javascript] 올바른 괄호 (0) | 2023.02.02 |
|---|---|
| [프로그래머스 Level1][Javascript] 이상한 문자 만들기 (0) | 2023.02.01 |