본문 바로가기
코딩 테스트/[JS] programmers 코딩 테스트 연습

[Programmers/JS] 로또의 최고 순위와 최저 순위 / 프로그래머스 코딩 테스트 연습

by M개발자 2021. 6. 20.
반응형

로또의 최고 순위와 최저 순위

 


문제 설명

 

로또 6/45(이하 '로또'로 표기)는 1부터 45까지의 숫자 중 6개를 찍어서 맞히는 대표적인 복권입니다. 아래는 로또의 순위를 정하는 방식입니다.

 

순위당첨 내용
1 6개 번호가 모두 일치
2 5개 번호가 일치
3 4개 번호가 일치
4 3개 번호가 일치
5 2개 번호가 일치
6(낙첨) 그 외

 

로또를 구매한 민우는 당첨 번호 발표일을 학수고대하고 있었습니다. 하지만, 민우의 동생이 로또에 낙서를 하여, 일부 번호를 알아볼 수 없게 되었습니다. 당첨 번호 발표 후, 민우는 자신이 구매했던 로또로 당첨이 가능했던 최고 순위와 최저 순위를 알아보고 싶어 졌습니다.


예시

 

lottos win_nums result
[44, 1, 0, 0, 31, 25] [31, 10, 45, 1, 6, 19] [3, 5]
[0, 0, 0, 0, 0, 0] [38, 19, 20, 40, 15, 25] [1, 6]
[45, 4, 35, 20, 3, 9] [20, 9, 3, 45, 4, 35] [1, 1]

코드 해석 및 전체 코드

 

수도코드

1. 당첨 번호에 대한 순위 배열 선언

2. lottos의 번호가 win_nums에 포함되어있는지 구하기

3. lottos에 0이 몇개인지 구하기

4. 개수에 해당하는 순위를 answer 배열에 넣기

 

filter()

: 조건을 충족하는 요소 여러 개를 반환받기 위해 사용하는 메서드, 조건에 맞는 요소 전체를 담은 배열을 반환한다.

 

includes()

: 배열이 특정 요소를 포함하고 있는지 판별한다.

 

1. 당첨 번호에 대한 순위 배열 선언

최고 순위와 최저 순위를 반환하기 위해 당첨 번호에 대한 순위가 담긴 배열을 선언한다. 

당첨 번호가 1개일 경우 6등이므로 rank[1]에는 6이 들어간다. 

 

2. lottos의 번호가 win_nums에 포함되어있는지 구하기

lottos.filter → lottos 배열에서 조건에 충족하는 요소를 찾는다. 

item → lottos 요소 위치

wins_nums.includes(item) → wins_num에 item이 포함되어있는지 판별한다.

length → 조건을 충족시킨 요소의 개수를 반환한다.

 

3. lottos에 0이 몇개인지 구하기

최댓값은 최솟값에 0의 개수를 더한 값이므로 length에 min을 더한다.

 

lottos.filter → lottos 배열에서 조건에 충족하는 요소를 찾는다.

i → lottos 요소 위치

i === 0 → i가 0인지 판별한다.

length + 1→ 조건을 충족시킨 요소의 개수에 min을 더해 반환한다.

 

4. 개수에 해당하는 순위를 answer 배열에 넣기

max가 4일 경우 rank[max]는 3이다. 

answer 배열에 3을 push한다. 

 

function solution(lottos, win_nums) {
    var rank = [6, 6, 5, 4, 3, 2, 1];
    let answer = [];

    let min = lottos.filter((item) => win_nums.includes(item)).length;
    let max = lottos.filter((i) => i === 0).length + min;

    answer.push(rank[max]);
    answer.push(rank[min]);

    return answer;
}

github

programmers

 

반응형

댓글