모의고사 - javascript

DonQ·2022년 3월 20일
0

CodingTest

목록 보기
3/33
post-thumbnail

나의 접근

  • 1번, 2번, 3번 수포자의 찍는 방식을 파악하여 수포자의 숫자 만큼 배열 생성 및 점수 생성 하였다.
  • 문제의 갯수만큼 for문을 돌리고 if문을 통해 수포자의 정답 배열에서 정답을 비교하여 정답이 맞을 경우 수포자의 점수를 +1 하였다.
  • 정답배열에 접근하는 법: 문제순서 % 정답배열갯수
  • 점수를 배열에 넣은 후 그 배열의 가장 큰 숫자를 확인 후 그 숫자와 같은 인덱스에 +1를 하여 수포자 1,2,3을 구분하여 리턴해주었다.

풀이

function solution(answers) {
    var answer = [];
    let result = [];
    const result1 = [1, 2, 3, 4, 5];
    const result2 = [2, 1, 2, 3, 2, 4, 2, 5];
    const result3 = [3, 3, 1, 1, 2, 2, 4, 4, 5, 5];
    let score1 = 0;
    let score2 = 0;
    let score3 = 0;
    
    for (let i = 0; i < answers.length; i++){
        if(answers[i] === result1[i % result1.length]){
            score1++;
        }
        if(answers[i] === result2[i % result2.length]){
            score2++;
        }
        if(answers[i] === result3[i % result3.length]){
            score3++;
        }
    }
    result.push(score1);
    result.push(score2);
    result.push(score3);
    for( let i = 0; i < result.length; i++){
        if(result[i] === Math.max(...result)){
            answer.push(i + 1)
        }
    }
    return answer;
}

오늘의 배운점 및 교훈

  • 다른사람의 풀이 에서 for문과 if문을 쓰지 않고 filter를 3번 사용하여 풀이한 것이 있었다.
    사실 아직 filter 함수에 익숙하지 않아 기본적은 for문만 쓰는데 사용법을 익혀야겠다.
    특히 filter에서도 index도 표현할수 있다는건 처음알았다 ...🤣
const score1 = answers.filter((x, i) => x === result1[i % result1.length]).length
  • 다른사람의 풀이 에서 score를 수포자갯수만큼 선언하지 않고 배열로 표현하였다.
    인상적이었다.
    아래와 같이 표현하니 변수도 하나 줄고 코드줄도 확실히 줄어들었다.
function solution(answers) {
    var answer = [];
    const result1 = [1, 2, 3, 4, 5];
    const result2 = [2, 1, 2, 3, 2, 4, 2, 5];
    const result3 = [3, 3, 1, 1, 2, 2, 4, 4, 5, 5];
    const score = [0, 0, 0];
    
    for (let i = 0; i < answers.length; i++){
        if(answers[i] === result1[i % result1.length]){
            score[0]++;
        }
        if(answers[i] === result2[i % result2.length]){
            score[1]++;
        }
        if(answers[i] === result3[i % result3.length]){
            score[2]++;
        }
    }
 
    for( let i = 0; i < score.length; i++){
        if(score[i] === Math.max(...score)){
            answer.push(i + 1)
        }
    }
    return answer;
}
profile
꾸준히 쌓아가는 코딩 Study

0개의 댓글

Powered by GraphCDN, the GraphQL CDN