본문 바로가기

알고리즘

[프로그래머스] lv1. 로또의 최고순위와 최저순위 (JavaScript)

 

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

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

내 풀이

function solution(lottos, win_nums) {
    let win = 0
    let cnt = 0
    let winner = [6,6,5,4,3,2,1]
    lottos.map(num => {
        win_nums.includes(num) && win ++;
        num === 0 && cnt ++;
    })
    return Array(winner[win+cnt], winner[win])
    
}

 

- map()은 새로운 배열을 반환하는데, 지금은 새로운 배열을 반환하기보다는 각 요소를 가공하는것이 목표이므로 forEach를 사용해도 된다.

 

수정한 코드!

function solution(lottos, win_nums) {
    let win = 0;
    let cnt = 0;
    const winner = [6, 6, 5, 4, 3, 2, 1];
    const winSet = new Set(win_nums);

    lottos.forEach(num => {
        if (winSet.has(num)) {
            win++;
        }
        if (num === 0) {
            cnt++;
        }
    });

    return [winner[win + cnt], winner[win]];
}