코딩테스트/프로그래머스

[프로그래머스 코딩테스트] - 로또의 최고 순위와 최저 순위 (JavaScript)

mandelina 2022. 2. 16. 18:04

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

아래는 로또의 순위를 정하는 방식입니다. 

 

 

순위를 정하는 방법

 

[매개변수]

lottos : 민우가 구매한 로또 번호를 담은 배열

 

win_nums : 당첨번호를 담은 배열

 

return값 : 당첨가능한 최고순위,최저순위 [max,min]

 

[제한사항] 

  • 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 rank = [6,6,5,4,3,2,1];   //순위 배열
    
    let minCount =lottos.filter(v=> win_nums.includes(v)).length;
    let zeroCount = lottos.filter(v=>!v).length;
    
    const maxCount = minCount + zeroCount;
    
    return [rank[maxCount],rank[minCount]];
}

 

 

4.로또당첨번호와 맞는 번호의 개수의 길이 minCount를 얻는다

5. 0의 개수 : 0은 false로 간주되므로 !v로 0인값의 개수를 얻는다.

7. 최고순위를 가질때는 0의개수+minCount 이다.

 


[사용된 속성]

filter함수

var newArray = arr.filter(callbackFunction(element, index, array), thisArg);​

매개변수 : callbackFunction , thisArg (callback을 생성할 때 this로 사용하는 값)

 

callbackFunction 의 매개변수 : element(요소값) , index(현재인덱스) , array(filter를 호출할 배열)

 

 


사용법1

list.filter(function(word){
	return word.length>6;
    })

사용법2

list.filter(word => word.length > 6);

사용법3

function filterCallbackFunction(word){
	return word.length >6;
};

 

list.filter(filterCallbackFunction);