이노베이션 캠프/3주차_알고리즘
[JS] 모의고사
hani:)
2023. 6. 19. 19:20
문제
https://school.programmers.co.kr/learn/courses/30/lessons/42840
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
문제 풀이
최종 제출
function solution(answers) {
let pattern1 = [1, 2, 3, 4, 5];
let pattern2 = [2, 1, 2, 3, 2, 4, 2, 5];
let pattern3 = [3, 3, 1, 1, 2, 2, 4, 4, 5, 5];
let temps = [0, 0, 0];
let totallen = answers.length;
for (let i=0; i<totallen; i++) {
if (pattern1[i%5] === answers[i]) {
temps[0]++;
}
if (pattern2[i%8] === answers[i]) {
temps[1]++;
}
if (pattern3[i%10] === answers[i]) {
temps[2]++;
}
}
let result = [];
let index = 0;
let maxVal = Math.max(...temps); // 최대 값 구하기
for (let i=0; i<3; i++) {
if (temps[i] === maxVal){
result[index] = i+1;
index++;
}
}
return result;
}
해설
- 세명의 정답 패턴을 배열에 저장 (pattern1, pattern2, pattern3)
- 정답 개수를 저장해줄 변수 선언 (temps, 인덱스로 사람 별 정답 개수를 관리)
- for문을 사용하여 요소 및 정답에 접근하여 정답을 맞힌 문제 개수 관리
- 사람별로 정해진 패턴이 다르기 때문에 % 연산자 사용하여 사람별로 정해진 인덱스에 접근
- 패턴과 정답이 일치하는 경우 증감 연산자 사용하여 정답 개수 증가
- 결과 값을 저장한 temps에서 Math.max()를 사용하여 최대 값 구함
- for 문을 사용하여 요소에 접근, 최대 값과 동일한 값 저장되어 있으면 수포자의 번호를 넣어줌 (수포자의 번호: index)
728x90