프로그래밍-학습기록/코딩테스트

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

leesche 2021. 5. 7. 23:44

해결 과정

문제 설명이 길고 복잡해 이거 1단계 맞나, 싶었지만 자세히 들여다보니 난이도가 쉬운 문제였다.

로또에서 불분명한 번호 0이 몇 개 나오는지 파악하면 최고순위와 최저순위를 자연스럽게 파악할 수 있다. 즉, 0은 어떤 번호던지 될 수 있으므로, 0이 모두 당첨번호이면 최고순위, 당첨번호가 아니면 최저순위가 된다.

따라서 이를 파악하기 위해 알아야 하는 기존의 번호들에서 몇 개가 당첨번호이고, 불분명한 번호가 몇 개인지 알아내는 것이다.

그러면 맞춘 개수에 따라 몇 등인지 알고 정답을 반환할 수 있다.

소스 코드

function solution(lottos, win_nums) {
  const rankPerMatches = [6, 6, 5, 4, 3, 2, 1];

  const unknownNumberCount = lottos.filter((number) => number === 0).length;
  const matchCount = lottos.filter((number) => {
    if (win_nums.includes(number)) {
      return true;
    }
  }).length;

  const minimumRank = rankPerMatches[matchCount];
  const maximumRank = rankPerMatches[matchCount + unknownNumberCount];

  return [maximumRank, minimumRank];
}