반응형
처음에는 문제개수만큼 수포자1,수포자2,수포자3의 배열을 일일이 다 구했다.
다 풀 후에 다른사람들의 풀이를 보고 filter를 이용해 코드를 확 줄일 수 있다는 것을 알았다.
내 코드
function solution(answers) {
let ansLength = answers.length
let stu1 = []
let stu2 = []
let stu3 = []
let k1 = 1
let k2 = 1
let k3 = [3,3,1,1,2,2,4,4,5,5]
//문제 개수만큼 stu1,stu2,stu3의 개수도 같게함
for(let i=0;i<ansLength;i++){
if(k1===6)k1=1
if(k2===2)k2++
if(k2===6)k2=1
stu1.push(k1)
k1++
if(i%2===0){
stu2.push(2)
}else{
stu2.push(k2)
k2++
}
stu3.push(k3[i%10])
}
let cnt1=[1,0]//[수포자1,맞춘문제수]
let cnt2=[2,0]
let cnt3=[3,0]
answers.forEach((answer,i)=>{
if(answer===stu1[i])cnt1[1]++//맞춘문제++
if(answer===stu2[i])cnt2[1]++
if(answer===stu3[i])cnt3[1]++
})
//filter쓰면 여기까지를 7줄로 줄일 수 있음
let ans = []
const max = Math.max(cnt1[1],cnt2[1],cnt3[1])
if(max===cnt1[1])ans.push(cnt1[0])
if(max===cnt2[1])ans.push(cnt2[0])
if(max===cnt3[1])ans.push(cnt3[0])
return ans
}
다른사람 코드
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;
}
반응형
'개발 > 알고리즘' 카테고리의 다른 글
프로그래머스 1차 비밀지도 JS (0) | 2021.12.28 |
---|---|
프로그래머스 문자열 내맘대로 정하기 ( JS, Array.sort() ) (0) | 2021.12.28 |
프로그래머스 : 크레인 인형 뽑기 (자바스크립트) (0) | 2021.10.29 |
프로그래머스 키패드 누르기 (자바스크립트) (0) | 2021.10.28 |
프로그래머스 : 숫자 문자열과 영단어 자바스크립트 (0) | 2021.10.27 |