[Programmers] 로또의 최고 순위와 최저 순위

노아카프카·2022년 1월 31일
0

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

쉬운 문제를 얼마나 간단하고 알아보기 쉽게 코딩하는가를 계속해서 생각하자.

Before


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문 너무 남발하지 않기를

0개의 댓글