프로그래머스/Level1
[그리디/프로그래머스] 2021 Dev-Matching 웹 백엔드 개발
ydin
2022. 8. 16. 16:51
- 문제 : https://school.programmers.co.kr/learn/courses/30/lessons/77484
Level1이고, 스스로 푼 문제
1.
로직은 당첨 번호과 같은 숫자들의 갯수를 먼저 센다
이거는 correct 변수로 진행한다
2.
2-1. 0의 갯수를 카운트 한 다음 0이 모두 당첨번호가 아닌 경우가 가능한 가장 낮은 등수일 것이고,
2-2. 0이 모두 당첨번호인 경우에 가능한 가장 높은 등수일 것이다.
이 경우는 zeros 변수로 진행한다
if문 만족하는 경우는 break 써서 해당 for문 나와야 한다. 안 그럼 틀린다!
처음에는 가장 높은 등수를 세는 건데, 만약 맞는 숫자와 0의 갯수의 합이 0이면 무조건 6등이므로, 이는 따로 조건 설정을 해준다
같은 로직으로 가장 낮은 등수를 찾는다음 answer에 삽입한 후 반환하면 된다
- 정답 풀이 :
def solution(lottos, win_nums):
answer = []
correct = 0
zeros = 0
for i in range(6):
if lottos[i] in win_nums:
correct += 1
if lottos[i] == 0:
zeros += 1
first = correct + zeros
for i in range(6,-1,-1):
if i == 0:
answer.append(6)
break
elif first == i :
answer.append(7-i)
break
for i in range(6,-1,-1):
if correct == 0:
answer.append(6)
break
elif correct == i:
answer.append(7-i)
break
return answer