본문 바로가기
알고리즘

[프로그래머스 python, javascript] 로또의 최고 순위와 최저 순위

by 새우하이 2021. 7. 1.

 

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

 

코딩테스트 연습 - 로또의 최고 순위와 최저 순위

로또 6/45(이하 '로또'로 표기)는 1부터 45까지의 숫자 중 6개를 찍어서 맞히는 대표적인 복권입니다. 아래는 로또의 순위를 정하는 방식입니다. 1 순위 당첨 내용 1 6개 번호가 모두 일치 2 5개 번호

programmers.co.kr

javascript와 python 모두 filter 함수를 사용했다. 약간의 사용법은 다르다. 

문제 풀이는 적어도 맞힌 갯수와

최대로 맞힐 수 있는 갯수를 구하면 된다.

#javascript 

function solution(lottos, win_nums) {
    var answer = [];
    var rank=[6,6,5,4,3,2,1]
    var min = lottos.filter(x => win_nums.includes(x)).length;
    var zero = lottos.filter(x => x === 0).length
    var max = zero+min;
    answer=[rank[max],rank[min]]
    return answer;
}

javascript 에서 in 연산자의 속성값은 인덱스를 나타내는 숫자나 값을 가지고 있기 때문에 여기서는 includes 를 사용했다.

includes는 배열이 특정 요소를 포함하고 있는지 없는지를 Boolean 값으로 반환함.

그리고 filter는 true를 받으면 그 요소를 유지하고, false를 받으면 버리고 새로운 배열로 만들어 반환한다.

 

#python

def solution(lottos, win_nums):
    rank = [6,6,5,4,3,2,1]
    min = list(filter(lambda x : x in win_nums, lottos))
    zero = list(filter(lambda x : x==0, lottos))
    max = min + zero
    answer = [rank[len(max)], rank[len(min)]]

    return answer

python 에서 filter는 함수와 이터러블 객체가 속성값으로 필요하다.

그래서 람다를 사용해서 lottos의 요소 하나씩 win_nums 에 있는지 확인하고 없는 객체들은 삭제하여 새로운 배열을 반환하고 

객체들의 길이를 구해 몇개인지 확인하는 방법이다.

댓글