본 게시물은 프로그래머스의 연습 문제 풀이입니다. 저작권은 (주) 그랩에게 있습니다
파이썬 코드
# 로또의 최고 순위와 최저 순위
def solution(lottos, win_nums):
answer = []
# 일치한 수에 다른 순위를 표시하는 딕셔너리
win_dic = {
6: 1,
5: 2,
4: 3,
3: 4,
2: 5,
1: 6,
0: 6
}
# lottos의 요소를 하나씩 접근하면서 win_nums와 몇 개가 같은 지, 알아볼 수 없는 수(0) 세기
# 같은 수의 갯수
same_nums = 0
# 알아볼 수 없는 수
zero_count = 0
for lotto in lottos:
# lotto가 win_nums 리스트에 존재하는 원소인 경우
if lotto in win_nums:
same_nums += 1
# lotto가 0인 경우
if lotto == 0:
zero_count += 1
# 당첨 가능한 최고 순위: zero_count가 모두 win_nums에 있는 수인 경우 -> same_nums에 zero_count를 더한 수의 순위
# 당첨 가능한 최저 순위: zero_count가 모두 win_nums에 속하지 않는 경우 -> same_nums에 따른 순위
answer.append(win_dic[same_nums + zero_count])
answer.append(win_dic[same_nums])
return answer
Comment
로또의 순위는 일치한 수에 따라서 정해지므로, 맞은수(key)에 따른 순위(key value)를 표현한 딕셔너리를 선언한다.
그 이후, for문으로 lottos의 요소를 하나씩 접근하며, win_nums에 몇개가 같은지 그리고 0이 얼마나 들어있는지를 센다.
여기서 당첨 가능한 최고 순위를 구하려면 0인 숫자가 win_nums에 모두 속할 때 이므로 0의 갯수만큼을 맞은 수로 더 더한다. 반대로, 당첨 가능한 최저 순위를 구하려면 0인 숫자가 win_nums에 모두 속하지 않을 때이므로 더하지 않는다.
Reference
'programming study > Algorithm' 카테고리의 다른 글
[프로그래머스] 콜라츠 추측 - python 풀이 (0) | 2021.06.20 |
---|---|
[프로그래머스] 문자열 다루기 기본 - python 풀이 (0) | 2021.06.19 |
[프로그래머스] 문자열 내림차순으로 배치하기 - python 풀이 (0) | 2021.06.18 |
[프로그래머스] 키패드 누르기 - python 풀이 (0) | 2021.06.18 |
[프로그래머스] 방금그곡 - python 풀이 (0) | 2021.06.17 |