알고리즘(Algorithm)
프로그래머스 - 모의고사 [JS]
Hun-bot
2022. 12. 30. 22:03
728x90
반응형
핵심
제출 시 5번 이후로 거의 다 실패가 나온다면 그건 answers의 길이와 각 수포자가 찍는 방식의 대한 길이를 고려하지 X
단순하게 아래처럼 코드를 만들었다고 가정해보자
answers.forEach((i,idx)=>{
if(i===ex1[idx]){
ans.push(1)
}
if(i===ex2[idx]){
ans.push(2)
}
if(i===ex3[idx]){
ans.push(3)
}
})
만약 answers가 [1,2,3,4,5,2,2,2,3,4,2,5,1,2,5,5,3] 이런식으로 되어있다면 idx값은 계속해서 증가한다.
그래서 ex1[10] ← undefined 라는 결과가 나오기에 인덱스 자체를 각 수포자가 찍는 방식의 길이로 나눠서 해결하면 되는 문제였다.
answers.forEach((i,idx)=>{
if(i===ex1[idx%ex1.length]) ans[0]+=1
if(i===ex2[idx%ex2.length]) ans[1]+=1
if(i===ex3[idx%ex3.length]) ans[2]+=1
})
1번 수포자가 찍는 방식: 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, ...
2번 수포자가 찍는 방식: 2, 1, 2, 3, 2, 4, 2, 5, 2, 1, 2, 3, 2, 4, 2, 5, ...
3번 수포자가 찍는 방식: 3, 3, 1, 1, 2, 2, 4, 4, 5, 5, 3, 3, 1, 1, 2, 2, 4, 4, 5, 5, ...
function solution(answers) {
const ex1=[1,2,3,4,5]
const ex2=[2,1,2,3,2,4,2,5]
const ex3=[3,3,1,1,2,2,4,4,5,5]
let ans=[0,0,0]
let res=[]
answers.forEach((i,idx)=>{
if(i===ex1[idx%ex1.length]) ans[0]+=1
if(i===ex2[idx%ex2.length]) ans[1]+=1
if(i===ex3[idx%ex3.length]) ans[2]+=1
})
for (let i = 0; i < ans.length; i++) {
if(Math.max(...ans)===ans[i]){
res.push(i+1)
}
}
return res
}
solution([1,2,3,4,5])
1번 수포자가 찍는 방식: 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, ...
2번 수포자가 찍는 방식: 2, 1, 2, 3, 2, 4, 2, 5, 2, 1, 2, 3, 2, 4, 2, 5, ...
3번 수포자가 찍는 방식: 3, 3, 1, 1, 2, 2, 4, 4, 5, 5, 3, 3, 1, 1, 2, 2, 4, 4, 5, 5, ...
728x90
반응형