반응형
프로그래머스 - 알고리즘 고득점 Kit 완전탐색 편
완전탐색 두 번째 문제입니다.

저의 코드는 복잡합니다..
학생1, 학생2, 학생3의 정답찍기 패턴과 정답 갯수를 묶어서 다루고 싶었습니다.
1. repeat을 통해서 정답찍기 패턴을 반복해서 생성할 수 있었습니다.
2. 정확하게 나눠떨어지지 않는다면 slice함수를 이용해서 추가해주었습니다.
3. for문을 돌면서 변형된 문자열을 돌면서 학생별로 정답을 누적합합니다.
4. 누적합의 최댓값을 구하고, 학생별로 result 배열에 추가해줍니다.
// 나의 풀이
function solution(answers) {
let result = [];
const len = answers.length;
let student1 = ["12345", 0];
let student2 = ["21232425", 0];
let student3 = ["3311224455", 0];
const transformed1 =
student1[0].repeat(Math.floor(len / student1[0].length)) +
student1[0].slice(0, len % student1[0].length);
const transformed2 =
student2[0].repeat(Math.floor(len / student2[0].length)) +
student2[0].slice(0, len % student2[0].length);
const transformed3 =
student3[0].repeat(Math.floor(len / student3[0].length)) +
student3[0].slice(0, len % student3[0].length);
for (let i = 0; i < len; i++) {
if (Number(transformed1[i]) === answers[i]) student1[1]++;
if (Number(transformed2[i]) === answers[i]) student2[1]++;
if (Number(transformed3[i]) === answers[i]) student3[1]++;
}
const maxCorrection = Math.max(student1[1], student2[1], student3[1]);
if (student1[1] === maxCorrection) result.push(1);
if (student2[1] === maxCorrection) result.push(2);
if (student3[1] === maxCorrection) result.push(3);
return result.sort((a, b) => a - b);
}
마지막에 오름차순 정렬을 하였는데, 이는 다시보니 불필요한 작업이었습니다.
다른 분의 풀이를 참고하니, repeat을 통해서 배열을 생성할 필요도 없었고,
처음부터 정수형 배열을 만들어줬습니다. 나머지 연산을 통해서 정답을 확인할 수 있었습니다.
// 다른 사람 풀이
function solution(answers) {
var answer = [];
var a1 = [1, 2, 3, 4, 5];
var a2 = [2, 1, 2, 3, 2, 4, 2, 5];
var a3 = [3, 3, 1, 1, 2, 2, 4, 4, 5, 5];
var a1c = answers.filter((a, i) => a === a1[i % a1.length]).length;
var a2c = answers.filter((a, i) => a === a2[i % a2.length]).length;
var a3c = answers.filter((a, i) => a === a3[i % a3.length]).length;
var max = Math.max(a1c, a2c, a3c);
if (a1c === max) {
answer.push(1);
}
if (a2c === max) {
answer.push(2);
}
if (a3c === max) {
answer.push(3);
}
return answer;
}
다음에는 완전탐색 3편으로 찾아오겠습니다.
반응형
'알고리즘 PS > Javascript' 카테고리의 다른 글
[JavaScript] 카펫 - 완전탐색 (1) | 2024.10.18 |
---|---|
[JavaScript] 소수 찾기 - 완전탐색 (0) | 2024.10.17 |
[JavaScript] 최소직사각형 - 완전탐색 (0) | 2024.10.15 |
[JavaScript] 백준 2565번 문제 풀이 (0) | 2023.09.23 |
[JavaScript] 백준 1520번 문제 풀이 (0) | 2023.09.22 |