본문 바로가기

알고리즘구현능력/문제해결능력

[javascript] 프로그래머스/모의고사

수포자에 대한 반복되는 틀을 저장한뒤에 함수로 저장한다음 뽑아내는 식으로 만들었다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
//1번 수포자 1,2,3,4,5,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,   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,3,3,1,1,2,2,4,4,5,5  3-1-2-4-5-3-1-2-4-5
function solution(answers) {
    var answer = [];
    //1번 수포자
    let count_1 = {
        name : 1,
        val:count1(answers)
    };
    //2번 수포자
    let count_2 = {
        name : 2,
        val:count2(answers)
    };
    let count_3 = {
        name : 3,
        val:count3(answers)
    };
    let result = [count_1,count_2,count_3];
    //정렬 
    result = result.sort(function(a,b){  //mutable 그냥써도 result 가 바뀐다...
        return b.val - a.val   ; //내림차순...
    });
    //필터
    result = result.filter(function(element,index,array){ // immutable  바뀌지않기때문에 저장을 해줘야한다..
        return Number(element.val) === Number(array[0].val);
    })
    //정렬
    result = result.sort(function(a,b){
        return a.name - b.name;  //오름차순
    })
    //바꾸기
    result = result.map(function(element){
        return element.name;
    })
    answer = result;
    return answer;
}
//1번 수포자
function count1(num){
    let numbers = [1,2,3,4,5];
    let count_1 = 0;
    for(let i=0;i<num.length;i++){
        let count = i%numbers.length;
        if(numbers[count] === num[i]){
          count_1++;    
        } 
    }
    return count_1;
}
//2번 수포자
function count2(num){
    let numbers = [2,1,2,3,2,4,2,5];
    let count_2 = 0;
    for(let i=0;i<num.length;i++){
        let count = i%numbers.length;
        if(numbers[count] === num[i]){
          count_2++;    
        } 
    }
    return count_2;
}
//3번 수포자
function count3(num){
    let numbers = [3,3,1,1,2,2,4,4,5,5];
    let count_3 = 0;
    for(let i=0;i<num.length;i++){
        let count = i%numbers.length;
        if(numbers[count] === num[i]){
          count_3++;    
        } 
    }
    return count_3;
}
cs