[프로그래머스 | javascript] 모의고사 (완전탐색)

728x90
반응형

(1) 내 풀이

function solution(answers) {
  
    let answer =[]
    let math1 =[1, 2, 3, 4, 5]
    let math2 =[2, 1, 2, 3, 2, 4, 2, 5]
    let math3 =[3, 3, 1, 1, 2, 2, 4, 4, 5, 5]

    let cnt =[0,0,0]
    
    for (let i =0 ; i<answers.length; i++){
        
        if(math1[i%math1.length]==answers[i]) cnt[0] ++
        if(math2[i%math2.length]==answers[i]) cnt[1] ++
        if(math3[i%math3.length]==answers[i]) cnt[2] ++
    }
    
      let max = Math.max(cnt[0], cnt[1], cnt[2]);
 
      if (cnt[0] === max) answer.push(1);
      if (cnt[1] === max) answer.push(2);
      if (cnt[2] === max) answer.push(3);
 
    return answer
    
}

*문제 : answers= [1,2,3,4,5] => return [1]

 

1. 수포자123의 답 = math1[i%math1.length] === answer[i] 를 비교

 (배열의 인덱스를 [ i % 배열의 길이] 로 사용하기)

 

 2. cnt 각각에 값을 증가시키면 [5,0,0] 이 나옴

 

3. Math.max를 사용해서 3가지 중에 가장 큰 값을 구하기 

 

4. cnt와 최대값이 같다면 answer 배열에 끝에 넣기

 

 

끝.

반응형