[매일코딩-프로그래머스] 모의고사 05

2021. 12. 8. 10:41WEB Dev/CordingTEST

728x90

 

 

이런저런 회사일로 인해 아침 시간을 내기 애매한 상황이 되었었다.. 

지금도 약간 바쁘지만 딱 10분만 코테를 풀어보려고 블로그를 켰네 😥

 

우선 통째로 베껴온 코드는 이렇다.

 

function solution(answers) {
    let answer = [], res = [];

    let a=[1,2,3,4,5];
    let b=[2,1,2,3,2,4,2,5];
    let c=[3,3,1,1,2,2,4,4,5,5];

    let acnt = 0, bcnt=0, ccnt=0;

    for(let i=0; i<answers.length; i++){
        if(answers[i] === a[i]){
            acnt++;
        }
        if(answers[i] === b[i]){
            bcnt++;
        }
        if(answers[i] === c[i]){
            ccnt++;
        }
    }

    res.push(acnt, bcnt, ccnt);
    let max = Math.max(...res);

    for(let i=0; i<res.length; i++){
        if(res[i] === max){
            answer.push(i+1);
        }
    }
    return answer;
}

 

answer 이라는 빈 배열과, 결과를 종합할 res라는 빈 배열을 선언한다.

a, b, c 라는 변수가 각각 1번, 2번, 3번 학생이 되고 그들이 적은 답안 순서를 배열로 할당한다.

a학생이 맞춘 답의 수, b학생이 맞춘 답의 수, c학생이 맞춘 답의 수를 각각 0으로 초기화 한 acnt, bcnt, ccnt 변수를 만든다.

answers와 각 학생의 답안을 비교해야 하는데, 원래 코드는 for문이었지만 map으로 바꾸고 (map 연습차) if문을 이용해 각각의 a, b, c 배열과 answers를 비교해 cnt 변수에 맞춘 답의 갯수를 넣어준다.

 

그리고 아래 코드까지 실행하면 문제없이 테스트는 통과하나 정확성 테스트에서 반절이 날아간다ㅠㅠ

 

그래서 나는 

여기서 acnt, bcnt, ccnt를 value로 1, 2, 3을 key로 한 객체로 전환해서,

value값에 따라 객체를 내림차순 sort하고,

key값을 배열로 담는데,

sort한 객체의 value 값이 0이면 value를 담지 않는 코드를 써보려고 한다.

 

 

1. 객체로 전환

   let obj = {
        1 : acnt,
        2 : bcnt, 
        3 : ccnt,
    };

 

2. 객체를 내림차순 sort

객체는 정렬 메서드가 없어서 함수를 이용해야 한다고 한다!

 

 

자바스크립트 값에 따라 객체 정렬 - 몬스터코딩

백엔드 개발공부하는 블로그입니다.

kylexid.github.io

 

  let sortobj = [];
    for (let number in obj) {
    sortobj.push([number, obj[number]]);
    }
    sortobj.sort(function(a, b) {
    return b[1] - a[1];
    });

 

이것까지 하고 끝....

 

 

 

728x90