알고리즘 문제풀이/프로그래머스

로또의 최고 순위와 최저 순위 / js 풀이

Heman 2021. 6. 18. 18:37

프로그래머스 : 로또의 최고 순위와 최저 순위

https://programmers.co.kr/learn/courses/30/lessons/77484

문제풀이

이번 문제는 프로그래머스에서 상반기에 진행한 "2021 Dev-Matching: 웹 백엔드 개발자" 코딩 테스트에서 출제되었던 문제입니다.

순위나 맞춘 번호, 지워진 번호 등을 신경써야 될 것 같아 복잡해 보이지만 결과물은 의외로 간단하게 도출해 낼 수 있습니다.

 

  • 지워진 숫자를 카운트합니다.
  • 맞춘 숫자를 카운트합니다.
  • 결과는 [최고등수, 최저등수] 의 형태로 반환하기 때문에,
    지워진 숫자가 모두 맞으면 맞출 수 있는 "최고 등수", 모두 틀리면 "최저 등수"가 됩니다.
  • 정답은 [7-가장 많이 맞춘 수, 7-가장 적게 맞춘 수]

코드

function solution(lottos, win_nums) {
    let cntZero = 0; // 지워진 숫자를 카운트하기 위한 변수
    let cntAnswer = 0; // 맞춘 숫자를 카운트하기 위한 변수

    lottos.forEach(elem => { if(elem === 0) cntZero++ })
    // 지워진 숫자를 카운트

    if(cntZero === 6) return [1,6];
    // 모든 수가 지워져있다면 다른 검사 없이 바로 해답을 반환

    else{
        for(let i=0; i<lottos.length; i++)
            for(let j=0; j<win_nums.length; j++)
                if(lottos[i] === win_nums[j]) cntAnswer++;
        // 맞춘 숫자를 카운트

        if(cntAnswer < 2) cntAnswer = 1;
        // 맞춘 숫자가 2개보다 적으면(0 or 1) 등수 계산을 위해서 1로 통일함

        return [7-(cntZero+cntAnswer), 7-cntAnswer];
        // 숫자 7에서 맞은 수의 개수를 빼면 등수가 나옴
    }

}

 

리뷰

간단하기 때문에, 어려운 문제를 풀기 전 뇌를 예열해주기 위한 문제가 아니었나 싶습니다ㅎㅎ

'알고리즘 문제풀이 > 프로그래머스' 카테고리의 다른 글

멀쩡한 사각형 / js 풀이  (0) 2021.06.29
신규 아이디 추천 / js 풀이  (0) 2021.06.23
폰켓몬 / js 풀이  (0) 2021.06.22
K번째수 / js 풀이  (0) 2021.06.21
[3차] 파일명 정렬 / js 풀이  (0) 2021.04.23