[그 외]/ㄴ (코테연습 : 파이썬 ver)
[프로그래머스] 로또의 최고 순위와 최저 순위 (파이썬)
__hyeon2__
2021. 6. 25. 15:05
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
반응형