Algorithm

[프로그래머스] Level1 | 로또의 최고 순위와 최저 순위 - 파이썬(Python) | 연습문제

토오오끼 2021. 11. 14. 18:33
728x90
반응형

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

 

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

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

programmers.co.kr

프로그래머스에서 level 1 연습문제인 '로또의 최고 순위와 최저 순위' 문제를 풀었다.

 


for문을 사용하지 않고 번호가 일치하는지 아닌지 비교하는 방법을 떠올리기가 힘들었던 문제였다.

찾아보니 set에서 & 연산으로 공통인 요소를 뽑아낼 수 있었고 이를 사용해 맞춘 번호의 개수를 알아냈다.

 

정답 코드

def solution(lottos, win_nums):
    
    low_num = len(set(lottos) & set(win_nums))
    hight_num = low_num + lottos.count(0)
    
    win = [6,6,5,4,3,2,1]
    answer = [win[hight_num], win[low_num]]
    return answer

set의 & 연산으로 맞춘 번호의 개수를 알아냈고 거기에 0을 전부 맞춘 번호라고 가정한 후 개수를 더해주었다.

 

이 다음 단계에서 애를 먹었는데, 이 개수를 가지고 바로 등수를 구하려고 했는데 잘 되지 않아서 구글링을 많이 했다.

여러 블로그를 찾아보니 win이라는 리스트에 등수를 넣어서 맞춘 개수를 인덱스로 사용하였더라.

처음엔 생각없이 6개만 넣었는데 인덱스는 -1이기 때문에 맨 앞에 의미없는 6을 추가해서 제대로 된 등수를 구할 수 있게끔 했다.

 


해당 문제 풀이 코드

 

GitHub - YOOHYOJEONG/algorithm_practice: 알고리즘 공부 및 코딩테스트 준비

알고리즘 공부 및 코딩테스트 준비. Contribute to YOOHYOJEONG/algorithm_practice development by creating an account on GitHub.

github.com

 

728x90
반응형