본문 바로가기

⏳ 알고리즘/python 알고리즘 문제 풀이

프로그래머스 - 로또의 최고 순위와 최저 순위( 2021 Dev-Matching )

문제

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

 

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

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

programmers.co.kr

 

풀이

1) 반복문 이용

def solution(lottos, win_nums):
    low, high = 0, 0
    correct_count = 0
    unknown_num = lottos.count(0)
    
    for n in win_nums:
        if n in lottos:
            correct_count += 1
    
    if unknown_num == 6:
        return [1,6]
    elif correct_count == 0:
        return [6,6]
    
    if correct_count > correct_count + unknown_num:
        low = 7 - (correct_count + unknown_num)
        high = 7 - correct_count
    else : 
        low = 7 - (correct_count + unknown_num)
        high = 7 - correct_count
        
    return [low, high]

 

2) set 교집합

def solution(lottos, win_nums):
    unknown_num = lottos.count(0)
    correct_count = len(list(set(lottos) & set(win_nums)))
    
    if unknown_num == 6:
        return [1,6]
    elif correct_count == 0:
        return [6,6]
    
    answer = sorted([7 - (correct_count + unknown_num), 7 - correct_count])
        
    return answer