[문제 바로가기]
[ 문제 파악 ]
완전탐색 문제
[ 적용한 풀이 ]
function solution(answers) { // 문제 이렇게 슬플일이냐 ㅠㅠ
const 수포자들 = [[1, 2, 3, 4, 5], [2, 1, 2, 3, 2, 4, 2, 5], [3, 3, 1, 1, 2, 2, 4, 4, 5, 5]];
let count = Array(3).fill(0);
수포자들.map((수포자, index)=>{
let 묶음 = Math.ceil(answers.length/수포자.length); //올림
for(let 묶 = 0; 묶 < 묶음; 묶++){
수포자.map((찍음, idx)=>{
if(찍음 == answers[수포자.length*묶+idx]) count[index]++
})
}
})
let answer = [];
let maxValue = Math.max(...count);
count.map((c,idx) =>{
if(c == maxValue) answer.push(idx+1)
})
return answer;
}
[해결 과정 중 실수한 부분 / 잡담]
완전탐색이라 버젓이 써있었는데도 주의깊게 보지 않아서인지 시간이 오래 걸렸다.
answers와 수포자 부분을 비교하는 코드를 작성할때,
코드로 일을 시키는데 한꺼번에 다 끝내려고 하니 저런 가독성이 떨어지는 코드를 작성했다.
다른 사람들 풀이에서는 아래와 같이 같은 동작을 하지만
변수가 달라 여러번 적은 코드가 있었는데 그게 반복되더라도 훨씬 보기가 좋아보였다.
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;
}
[관련 문제 혹은 비슷한 문제]
완전탐색
'[개발] 코딩테스트 > 프로그래머스' 카테고리의 다른 글
[프로그래머스] 실패율 / Javascript (0) | 2022.05.03 |
---|---|
[프로그래머스] 체육복 / Javascript (0) | 2022.04.27 |
[프로그래머스] K번째수 / Javascript (0) | 2022.04.21 |
[프로그래머스]소수 만들기 / Javascript (0) | 2022.04.20 |
[프로그래머스] 문자열 압축 / Javascript (0) | 2022.04.16 |
댓글