<로직 고민>
- 일단..lottos에 0이 몇 개인지 판별해서 변수에 넣고
- lottos랑 win_nums가 몇 개 일치하는지 보고 일치 개수에 0 개수를 더한 게 answer[0], 더하기 전이 answer[1]이 되겠군
def solution(lottos, win_nums):
answer = []
zero, correct = 0, 0
ranking = {2: 5, 3: 4, 4: 3, 5: 3, 6: 1}
for lotto in lottos:
if lotto == 0:
zero += 1
if lotto in win_nums:
correct += 1
highest_ranking = ranking[correct + zero]
try:
lowest_ranking = ranking[correct]
except:
lowest_ranking = 6
answer.append(highest_ranking)
answer.append(lowest_ranking)
return answer
- 이렇게 했더니 테스트 4,9,13 실패, 14는 런타임 에러가 뜬다
- 그래서 highest_ranking도 try-except 구문에 넣었더니 더 많은 테스트에서 에러가 뜬다...
- 일단 6등이 되는 경우를 딕셔너리에 정의하지 않아서 그런 것 같아 딕셔너리에 6등이 되는 경우를 추가했다
def solution(lottos, win_nums):
...
ranking = {0: 6, 1: 6, 2: 5, 3: 4, 4: 3, 5: 3, 6: 1}
...
highest_ranking = ranking[correct + zero]
lowest_ranking = ranking[correct]
answer.append(highest_ranking)
answer.append(lowest_ranking)
return answer
- 이렇게 하니까 14번 런타임 에러는 안 뜨고 그대로 4,9,13은 실패가 뜬다...
- 4,9,13이 뭘까....후
- 2시까지 풀기로 했는데 2시까지 원인을 찾지 못해서 팀원들과 같이 내 코드를 봤다
- 문제는 딕셔너리였다 ㅋㅋㅋ.....
- 5개 맞은 경우 밸류로 2등이 와야 하는데 3으로 오타가 났었다...
- 그거 하나 바꿔주니 테스트 통과 된다...ㅋㅋㅋ
<완성된 코드>
def solution(lottos, win_nums):
answer = []
zero, correct = 0, 0
ranking = {0: 6, 1: 6, 2: 5, 3: 4, 4: 3, 5: 2, 6: 1}
for lotto in lottos:
if lotto == 0:
zero += 1
elif lotto in win_nums:
correct += 1
highest_ranking = ranking[correct + zero]
lowest_ranking = ranking[correct]
answer.append(highest_ranking)
answer.append(lowest_ranking)
return answer