문제 링크: https://school.programmers.co.kr/learn/courses/30/lessons/42840
1. 풀이
1번 수포자는 1,2,3,4,5번을 계속 반복하면서 찍고,
2번 수포자는 2,1,2,3,2,4,2,5번을 반복하면서 찍고,
3번 수포자는 3,3,1,1,2,2,4,4,5,5번을 반복하면서 찍는다.
수포자들이 찍은 번호들을 각각 배열로 선언하고, 수포자들이 맞춘 문제 개수들도 변수로 선언한다.
answers 배열을 순회하면서 해당 배열이 가리키는 index를 각각 5, 8, 10으로 나눈 값을
각 수포자가 찍은 번호 배열의 index를 가리키게 한 다음 같은지 비교를 했다.
그리고 같으면 수포자들이 맞춘 문제 개수들에 1을 더해준다.
순회가 끝나면 people 객체 배열를 선언해줬다. 프로퍼티는 name과 count로,
name에는 1,2,3이, count에는 아까 세어준 count들을 넣어줬다.
people 객체를 count 프로퍼티의 오름차순으로 정렬해주고, people 객체 배열의 맨 마지막 객체의 count를 max로 지정해주었다.
그리고 마지막으로 people을 순회하며 count와 max가 같은 객체의 name을 answer 배열에 push하고 return 해주었다.
2. 코드
function solution(answers) {
const one_array = [1,2,3,4,5];
const two_array = [2,1,2,3,2,4,2,5];
const three_array = [3,3,1,1,2,2,4,4,5,5];
let one_count = 0;
let two_count = 0;
let three_count = 0;
answers.forEach((e, i) => {
if (e === one_array[i % 5]) {
one_count++;
}
if(e === two_array[i % 8]) {
two_count++;
}
if(e === three_array[i % 10]) {
three_count++;
}
})
const people = [
{name: 1, count: one_count},
{name: 2, count: two_count},
{name: 3, count: three_count},
]
const sortedPeople = people.sort((a, b) => a.count - b.count);
const max = people[people.length -1].count;
let answer = [];
people.forEach((e) => {
if(e.count === max) {
answer.push(e.name);
}
})
return answer;
}
'Programmers(JavaScript)' 카테고리의 다른 글
[프로그래머스 자바스크립트] ‘올바른 괄호’ 풀어보기 (0) | 2025.01.07 |
---|---|
[프로그래머스 자바스크립트] ‘입국심사’ 풀어보기 (0) | 2024.12.31 |
[프로그래머스 자바스크립트] ‘최소직사각형’ 풀어보기 (2) | 2024.08.07 |
[프로그래머스 자바스크립트] ‘K번째수’ 풀어보기 (0) | 2024.08.07 |
[프로그래머스 자바스크립트] ‘구명보트’ 풀어보기 (0) | 2024.08.07 |