09. 프로그래머스(1단계) - 로또의 최고 순위와 최저 순위

성훈·2021년 8월 1일
0

Algorithm

목록 보기
9/61
post-thumbnail

📌 문제의 조건

  1. 1~45까지 무작위 숫자를 요소로 가지는 배열 두개를 인자로 받음.
  2. lottos 배열의 요소가 win_nums 배열의 요소와 얼마나 겹치는 지 계산하면 된다.

제한사항 🤔

  • lottos는 길이 6인 정수 배열입니다.
  • lottos의 모든 원소는 0 이상 45 이하인 정수입니다.
    • 0은 알아볼 수 없는 숫자를 의미합니다.
    • 0을 제외한 다른 숫자들은 lottos에 2개 이상 담겨있지 않습니다.
    • lottos의 원소들은 정렬되어 있지 않을 수도 있습니다.
  • win_nums은 길이 6인 정수 배열입니다.
  • win_nums의 모든 원소는 1 이상 45 이하인 정수입니다.
    • win_nums에는 같은 숫자가 2개 이상 담겨있지 않습니다.
    • win_nums의 원소들은 정렬되어 있지 않을 수도 있습니다.

📌 풀이

풀이 👨‍💻

function solution(lottos, win_nums) {
    let max = lottos.reduce((acc,cur)=>{
        if(win_nums.includes(cur) || cur === 0){
            return acc-1;
        }
        return acc;
    },7)
    let min = lottos.reduce((acc,cur)=>{
        if(win_nums.includes(cur)){
            return acc-1
        }
        return acc;
    },7)
    
    if(max === 7){
        max = 6;
    }
    if(min === 7){
        min = 6;
    }
    return [max, min]
}

📌 리뷰

리듀스로 풀어봤는데 이 방법과 다르게 max가 결국 min과 0의 갯수를 더한 수이니 이걸 사용해서 풀어볼 수 있을 것 같다.

문제를 풀면 풀수록 리듀스랑 친해지는 느낌이 들어서 좋다 ☺

📌 문제 출처

출처: 프로그래머스 코딩 테스트 연습, https://programmers.co.kr/learn/challenges#

profile
어떻게 이걸 풀어낼 수 있을까

0개의 댓글