https://programmers.co.kr/learn/courses/30/lessons/77484
쉬운 문제를 얼마나 간단하고 알아보기 쉽게 코딩하는가를 계속해서 생각하자.
def solution(lottos, win_nums):
zero = 0
cnt = 0
for num in lottos:
if num != 0:
if num in win_nums:
cnt += 1
else:
zero += 1
maxi = 7 - cnt - zero
if maxi == 7:
maxi = 6
mini = 7 - cnt
if mini == 7:
mini = 6
return [maxi, mini]
내가 작성한 위의 코드는 사실상 하드코딩이나 다름없다.
규칙을 찾아야하는데, 간단해보이니 규칙 찾기를 건너뛰고 주먹구구식 코딩을 했다.
생각해야 할 조건은 0의 갯수, 일치하는 번호의 갯수
다른 분들의 소스코드를 참고해서 새롭게 소스코드를 짜 보았다.
def solution(lottos, win_nums):
rank = [6,6,5,4,3,2,1]
zeroCnt = 0
correct = 0
for num in lottos:
if num == 0:
zeroCnt += 1
else:
if num in win_nums:
correct += 1
return [rank[correct+zeroCnt], rank[correct]]
참고한 풀이와는 조금 다르게 짜보려고 했는데, 거의 똑같은 풀이가 되어버렸다..
느낀점 : 주먹구구식 하드코딩을 되도록 피하자. if문 너무 남발하지 않기를