상세 컨텐츠

본문 제목

프로그래머스 Level1 - 모의고사 (JavaScript)

알고리즘/JavaScript 코딩테스트

by 테크투아트 2020. 5. 9. 19:19

본문

function solution(answers) {
    var student = [[1,2,3,4,5],[2,1,2,3,2,4,2,5],[3,3,1,1,2,2,4,4,5,5]];
    var answer = [];
    for (var i in student){
        var cnt = 0;
        for(var j in answers){
            if(student[i][j%student[i].length] === answers[j]){
                cnt++
            }
        }
            answer.push(cnt);
    }
    var maxnum = Math.max.apply(null,answer);
    var ans = [];
    for (var h=0; h<answer.length;h++){
        if(answer[h]==maxnum){
            ans.push(h+1);
            continue;
        }        
        ans.sort(function(a,b){return a-b;})
    }
    return ans;
}

 

으으으

먼저 student 배열을 선언하여, 학생1,2,3의 찍는 패턴을 담아주었습니다.

그 뒤, for문을 사용하여 학생1,2,3 각각을 answer의 배열과 비교해주었습니다.

각각 비교해서 같으면 cnt변수에 1을 추가하는 방식으로, 정답 개수를 셉니다.

마지막에는 answer이라는 배열을 선언하여, 각 학생의 정답 개수(cnt변수)를 push해줍니다.

 

그리고, answer 배열의 max값 즉, 가장 높은점수가 무엇인지를 구합니다.

자바스크립트에서 Math.max(1,2,3);을 하게 되면 3이 나옵니다.

그런데 배열 내에서의 max값을 구하고 싶으면, Math.max.apply(null, 알고싶은배열); 을 해주어야 합니다.

이 방법으로 가장 최고득점이 무엇인지 구했습니다.

 

이후 for문에서 최고득점과 같은 값을 가지고 있으면 그 인덱스를 ans 배열에 push해주었습니다.

정답 조건에 맞게 sort시켜주고 그 배열을 return 시킵니다.

 

이러한 방식의 알고리즘을 완전탐색이라고 하는 것 같습니다!!

관련글 더보기