티스토리 뷰

728x90
반응형

 

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

 

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

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

programmers.co.kr

 

 


 

 

<나의 풀이>

def solution(lottos, win_nums):
    answer = [6, 6, 5, 4, 3, 2, 1] # 등수를 담은 리스트 
    # 여기서 맞춘 갯수는 answer의 인덱스가 되고 등수가 인덱스의 요소가 됨
    # 예를 들어 2개를 맞추면 answer[2]이 되어 5등을 출력함 
    
    win_cnt = 0 # '맞춘 번호'의 개수를 담을 변수
    zero = 0 # '알아볼 수 없는 번호'의 개수를 담을 변수 
    lottos.sort()
    win_nums.sort()

    for i in lottos:
        # 알아볼 수 있는 번호 중 맞춘 개수 세기
        if i in win_nums:
            win_cnt += 1
        
        # 알아볼 수 없는 번호 개수 세기
        if i == 0:
            zero += 1
            
    # 최대 당첨 등수는 answer[맞춘 개수 + 못 알아보는 번호]
    # 최소 당첨 등수는 answer[맞춘 개수]
    return [answer[win_cnt+zero]]+[answer[win_cnt]]

 

다른 사람의 코드를 보니까 알아볼 수 없는 번호는

count()를  이용해 구했더라.

 

 

 

<다른 사람의 풀이>

def solution(lottos, win_nums):
    rank = {
        0: 6,
        1: 6,
        2: 5,
        3: 4,
        4: 3,
        5: 2,
        6: 1
    }
    return [rank[len(set(lottos) & set(win_nums)) + lottos.count(0)], rank[len(set(lottos) & set(win_nums))]]
    
    
# <배운점> 
# => rank와 set을 이용하여 푼 점
728x90
반응형
댓글