문제출처 : 프로그래머스
문제소개
로또의 최고 순위와 최저 순위
- 민우의 로또에 동생이 낙서를 해 알 수 없는 번호가 있다.
- 알 수 없는 번호를 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)
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}