본문 바로가기
프로그래머스/1단계

(Python/LV1) 로또의 최고순위와 최저순위

by windy7271 2022. 9. 14.
728x90
반응형

문제 출처: https://school.programmers.co.kr/learn/courses/30/lessons/77484

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

풀이:

 

def solution(lottos, win_nums):
    rank = {6 : 1, 5 : 2 , 4 : 3, 3 : 4, 2 : 5, 1 : 6, 0: 6}

    win = list(set(lottos)&set(win_nums))
    if lottos.count(0) == 6:
        return [1 , (rank[len(win)])]
    else:
        return [rank[len(win)] - lottos.count(0),(rank[len(win)])]

 

풀이 순서

 

최소는 0 으로 입력들어온게 다 틀렸을때 이므로 두 개 리스트의 교집합에 등수이다 (rank[len(win)])

 

최대는 0 으로 입력들어온게 다 맞을때 원래 등수에서 - 0의 갯수 만큼 해주면 되는데

 

0 이 6 개일때는 0이 되므로 if 문으로 0이 6개 일때는 1로 박아둔다.

 

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))]]
    
	프로그래머스 어떤분의 풀이: 비슷한 풀이로는 이렇게 있다....
반응형

댓글