한 걸음씩
[프로그래머스][JS] 모의고사 ✅ 본문
https://school.programmers.co.kr/learn/courses/30/lessons/42840
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
풀이 과정
function solution(answers) {
const pattern1 = [1, 2, 3, 4, 5]
const pattern2 = [2, 1, 2, 3, 2, 4, 2, 5]
const pattern3 = [3, 3, 1, 1, 2, 2, 4, 4, 5, 5]
let score = [0, 0, 0] // pattern1, pattern2, pattern3 각 점수
for (let i = 0; i < answers.length; i++){
// pattern1, 2, 3은 나머지 연산을 통해 인덱스로 접근
// 왜? pattern1, 2, 3의 패턴이 반복되니까 나머지 연산으로 접근해야 패턴을 반복적으로 사용 가능
if (answers[i] === pattern1[i % pattern1.length ]){
score[0]++
}
if (answers[i] === pattern2[i % pattern2.length ]){
score[1]++
}
if (answers[i] === pattern3[i % pattern3.length ]){
score[2]++
}
}
const max = Math.max(...score) // 가장 큰 수
// 가장 많은 문제를 맞힌 사람
let winners = []
for (let i = 0; i < score.length; i++){
if (score[i] === max){ // 가장 큰 수와 score[i]가 일치하면
winners.push(i + 1)
// i + 1 : 1번, 2번, 3번 총 3명의 수포자니까 인덱스에 + 1을 하여 push
}
}
return winners;
}
완전 탐색 문제이고 코드 설명은 주석을 참고하면 된다 ↑
리뷰
처음에 문제 이해가 안 됐는데 1번, 2번, 3번 수포자가 정답을 찍는 방식이 있고 거기서 패턴을 찾아 각 배열에 저장하고
answers배열은 정답인 배열이고 수포자의 배열과 answers배열을 맞췄을 때 수포자가 얼마나 많은 문제를 맞혔는지 찾는 문제이다.
'Programmers' 카테고리의 다른 글
[프로그래머스][JS] 문자열 내 마음대로 정렬하기 (0) | 2023.07.14 |
---|---|
[프로그래머스][JS] 삼총사 (0) | 2023.07.14 |
[프로그래머스][JS] 두 개 뽑아서 더하기 (0) | 2023.07.13 |
[프로그래머스][JS] 전국 대회 선발 고사 (0) | 2023.07.12 |
[프로그래머스][JS] 평행 (0) | 2023.07.12 |