Notice
Recent Posts
Recent Comments
Link
«   2025/05   »
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
Tags
more
Archives
Today
Total
관리 메뉴

개발 블로그

[Programmers/파이썬] 프로그래머스(Lv.1) 로또의 최고 순위와 최저 순위 문제풀이 본문

Algorithm

[Programmers/파이썬] 프로그래머스(Lv.1) 로또의 최고 순위와 최저 순위 문제풀이

토산인 2024. 8. 18. 16:11

문제 설명

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

 

프로그래머스

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

programmers.co.kr

 

 

사고 흐름

1. 0이 아닌 숫자들은 고정돼서 일치 여부가 정해져있다 -> 0의 개수가 핵심

2. 이미 일치한 것들은 바꿀 수 없으므로 -> 최소 당첨 

3. 0은 win과 동일하게 바꿀 수 있으므로 최소에서 0의 개수 더하면 -> 최대 당첨 

 

문제 핵심과 알고리즘

def solution(lottos, win_nums):
    b = len(set(lottos)&set(win_nums))  # 원래 일치하는 최소 원소들
    a = b+lottos.count(0)               # 일치하게 만들수있는 
    return [min(7-a,6),min(7-b,6)]

 

이미 win 과 일치하는 숫자들의 개수를 b라고 하고(최소 당첨), 0은 일치하게 바꿀 수 있는 마법의 숫자이므로 0의 개수를 카운트한 것을 더한 것을 a라고 한다.(최대 당첨)

근데 이때 하나도 당첨되지 않아 a나 b가 0이 나오면 7을 넘기 때문에 min을 사용해서 7일 경우 6으로 바꾼다. 

 

문제 풀면서 헤맸던 부분

딱히 없었다. 

 

총평 

이 문제는 알고리즘은 없었지만 문제를 이해하고 규칙을 찾는게 중요했다!