로또 최고, 최저 순위 찾기

문제출처 : 프로그래머스

문제소개

로또의 최고 순위와 최저 순위
- 민우의 로또에 동생이 낙서를 해 알 수 없는 번호가 있다. 
- 알 수 없는 번호를 0으로 표기한다고 할때, 
- 가능했던 최고 순위와 최저순위를 출력하는 프로그램을 작성하시오.
- 순서와 상관없이 일치하는 번호가 있으면 맞힌 걸로 인정된다. 

순위)
6개 모두 일치 1, 5개 일치 2... 2개 일치 5, 그 외는 꽝 

입력)
lottos = [44, 1, 0, 0, 31, 25]
win_nums = [31, 10, 45, 1, 6, 19]

출력)
result = [3, 5]

풀이접근

1. set 자료형끼리의 and 연산 --> # 두개의 로또에서 중복되는 값
2. 입력받은 리프노드 값을 트리에 대입
2. 부모노드(i//2)에 자식노드의 값을 더함 

코드

def solution(lottos, win_nums):
    cnt = len(set(lottos) & set(win_nums)) # 로또 맞힌 숫자 갯수
    cnt_0 = lottos.count(0) # 로또에서 낙서로 지워진 부분 
    
    # 0을 다 맞다고 봤을 때와 아닐때 값 구하기
    return [7-max(cnt+cnt_0,1), 7-max(cnt,1)] 

정의된 변수 값 확인

lottos = [44, 1, 0, 0, 31, 25]
win_nums = [31, 10, 45, 1, 6, 19]
set_and = set(lottos) & set(win_nums)
set_and
{1, 31}

좋은 웹페이지 즐겨찾기