본문 바로가기
자료구조 & 알고리즘

프로그래머스 로또의 최고 순위와 최저 순위 - 자바스크립트 풀이

by PARADISE247 2024. 11. 24.
반응형

 

 

프로그래머스

SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프

programmers.co.kr

 

로또를 구매한 민우는 당첨 번호 발표일을 학수고대하고 있었습니다. 하지만, 민우의 동생이 로또에 낙서를 하여, 일부 번호를 알아볼 수 없게 되었습니다.

민우의 동생은 뭐가 문제일까요? ☹️

집을 떠나는 민우

문제 풀이 자바스크립트 코드입니다

function solution(lottos, win_nums) {
    let answer = [6,6];
    const wins = win_nums.filter(x => lottos.includes(x));

    answer[1] = 7 - (wins.length || 1); // 최저 순위
    answer[0] = 7 - ((lottos.filter(x => x === 0).length + wins.length) || 1); // 최고 순위

    return answer;
}

우선 최저 순위는 구하기 쉽습니다. 민우 동생이 지워버린 번호에 대한 가정없이 우선 보이는 번호 중 몇개의 번호가 당첨 번호와 일치하는지 확인하면 최저 순위를 구할 수 있습니다. 

민우의 로또  : 44, 1, 0, 0, 31 25     당첨 번호: 31, 10, 45, 1, 6, 19

만약 위와 같은 로또 번호가 주어질 경우, 최저 순위는 0인 번호를 무시하고 당첨 번호와 1, 31 두 번호가 일치하므로 5위가 됩니다.

 answer[1] = 7 - (wins.length || 1);

위의 코드 중 || 1 이 부분은 당첨 번호와 일치하는 번호의 개수가 0개인 경우도 최저 순위가 6위가 되도록 하기 위함입니다. 문제에서 1개 혹은 0개의 번호가 일치하는 경우는 6위를 부여하기 때문입니다.

이제 최고 순위를 구해봅시다. 

 answer[0] = 7 - ((lottos.filter(x => x === 0).length + wins.length) || 1);

최고 순위는 민우 동생이 지워버린 숫자가 사실 다 당첨 번호에 해당한다고 가정했을때 최고 순위가 나오게 됩니다. 따라서 위와 같이 코드를 짜줍니다. 이때도 마찬가지로 일치하는 번호가 0개인 경우를 위해 끝에  || 1  로 처리합니다.

반응형