공부해야할것

나중에 공부해보면 좋을만한 것들 21.06.07
1) React Redux 21.06.12 토 ~ 06.13 일(HA끝나고 여유있으면 주말에 몰아서 공부 ㄱㄱ)

2) jQuery


function solution(answers) {
    // 1번 수포자가 찍는 방식
    // 1, 2, 3, 4, 5
    // 2번 수포자가 찍는 방식
    // 2, 1, 2, 3, 2, 4, 2, 5
    // 3번 수포자가 찍는 방식
    // 3, 3, 1, 1, 2, 2, 4, 4, 5, 5
    
    let arrTemp = [];
    let resultArr = [1, 2, 3];
    let strTemp = '';
    let temp = 0;
    let rangkingTemp = 0;
    const num_type = [
        [1, 2, 3, 4, 5],
        [2, 1, 2, 3, 2, 4, 2, 5],
        [3, 3, 1, 1, 2, 2, 4, 4, 5, 5]
    ];
    
    
    for(let i = 0; i < 3; i++){ 
        strTemp = num_type[i].join('');
        for(let j = 0; j < answers.length; j++){
            arrTemp.push(strTemp[j]);
        }
        num_type[i] = arrTemp.slice(0,answers.length);
        arrTemp = [];
        num_type[i].push(0);    // count를 위한
    }

    
    for(let i = 0; i < 3; i++){
        for(let j = 0; j < answers.length; j++){
            if(Number(num_type[i][j]) === answers[j]){
                num_type[i][num_type[i].length-1] += 1;
            }
        }
    }
    temp = num_type[0][num_type[0].length-1];
    rangkingTemp = resultArr[0];
    
    for(let i = 1; i < 3; i++){
        if(temp < num_type[i][num_type[i].length-1]){
            strTemp = rangkingTemp;
            rangkingTemp = resultArr[i];
            resultArr[i] = strTemp;
            temp = num_type[i][num_type[i].length-1];
        }
    }
    
    if(num_type[0][num_type[0].length-1] === num_type[1][num_type[1].length-1]
       && num_type[0][num_type[0].length-1] === num_type[2][num_type[2].length-1]
       && num_type[1][num_type[1].length-1] === num_type[2][num_type[2].length-1]){
           return resultArr;
       }else{
           return [resultArr[0]];
       }
   
}

이 코드가

const solution = (answers) => {
    let students = [[1,2,3,4,5],[2,1,2,3,2,4,2,5],[3,3,1,1,2,2,4,4,5,5]];
    let answer = [];
    
    for(let student of students) {
        answer.push(answers.reduce((acc,cur,idx) => (cur==student[idx % student.length] ? acc++ : acc,acc),0))
    }  
    return answer.reduce((acc,cur,idx) => (cur === Math.max(...answer) ? acc.push(idx+1) : acc,acc),[])
}

이렇게 짧아질 수 있다니.. 공부를 해봐야겠다.

생각보더 코딩테스트에서 map, reduce, filter가 많이 사용되는 것 같다. 친숙해지자.

다른 블로그를 본 코드

function solution(answers) {
    let answ = [];
    // 1번 수포자가 찍는 방식
    // 1, 2, 3, 4, 5
    // 2번 수포자가 찍는 방식
    // 2, 1, 2, 3, 2, 4, 2, 5
    // 3번 수포자가 찍는 방식
    // 3, 3, 1, 1, 2, 2, 4, 4, 5, 5
    let a1 = [1, 2, 3, 4, 5];
    let a2 = [2, 1, 2, 3, 2, 4, 2, 5];
    let a3 = [3, 3, 1, 1, 2, 2, 4, 4, 5, 5];
    
    let an1 = answers.filter((a, index) => a === a1[index%5]).length;
    let an2 = answers.filter((a, index) => a === a2[index%8]).length;
    let an3= answers.filter((a, index) => a === a3[index%10]).length;
    
    let max = Math.max(an1, an2, an3);
    
    if(max === an1){answ.push(1)};
    if(max === an2){answ.push(2)};
    if(max === an3){answ.push(3)};
    
    return answ;
}

좋은 웹페이지 즐겨찾기