-
[JS] 모의고사이노베이션 캠프/3주차_알고리즘 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'이노베이션 캠프 > 3주차_알고리즘' 카테고리의 다른 글
[JS] 문자열 내림차순으로 배치하기 (0) 2023.06.19 [JS] 문자열 내 마음대로 (0) 2023.06.19 [JS] 로또의 최고 순위와 최저 순위 (0) 2023.06.17 [JS] 두 개 뽑아서 더하기 (0) 2023.06.17 [JS] 같은 숫자는 싫어 (0) 2023.06.17