본문 바로가기
Algorithm/프로그래머스

[프로그래머스] 로또의 최고 순위와 최저 순위 - 파이썬 풀이

by daewooki 2022. 4. 29.
반응형

문제

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

 

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

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

programmers.co.kr

 

2021 Dev-Matching: 웹 백엔드 개발자(상반기)에 기출 된 문제이다

 

 

코드

1
2
3
4
5
6
7
8
9
10
def solution(lottos, win_nums):
    answer = []
    winner = [6654321]
    low = len(list(set(lottos).intersection(win_nums)))
    high = low + lottos.count(0)
 
    answer.append(winner[high])
    answer.append(winner[low])
 
    return answer
cs

winner라는 리스트를 만들어주엇다.

맞춘 숫자가 0개일 때 6등, 1개일 때 6등, 2개일 때 5등, 3개일 때 4등...

최종적으로 맞춘 갯수에 따라 등수를 매겨주기 위해 만든 리스트이다.

 

다음으로 set의 intersection 함수를 통해서 두 리스트의 교집합을 찾아준다.

즉, 최소 맞춘 갯수가 된다. (low 변수)

 

로또 특성상 중복 숫자를 뽑을 수 없기 때문에 set함수 사용이 가능하다.

 

그리고 0으로 마킹된 숫자의 경우 맞췄다고 가정할 수 있기 때문에 최대로는 

0의 갯수만큼을 low에서 더해주면 된다.

 

그리고 각각 winner에서 등수를 찾아 리턴하면 된다.

 

아주 간단한 문제이다.

 

다른 사람의 풀이를 보았을 때 크게 차이가 없는 코드였다. (winner 변수 사용한 것은 잘한 듯.)

 

반응형

댓글