[프로그래머스] 로또의 최고순위와 최저 순위 - python

SUN·2022년 9월 23일
0

algorithm

목록 보기
16/30
post-thumbnail

문제

오늘 풀어볼 문제는 로또의 최고순위와 최저 순위이다.

풀이과정

이 문제를 보고 든 생각은
이렇게 쉬울리가 없는데.. 그냥 구현하면 될 거 같은데.. 아닌가.. 뭔가 함정이 있나..?
하면서 괜히 의심을 했다. 근데 그냥 문제에 나온대로 풀었더니 통과됐다.

  1. 고른 로또 번호 중에서 win_nums와 일치하는 번호의 개수를 센다 (win_count)
  2. 고른 로또 번호 중에서 0(모르는 번호)인 번호의 개수를 센다 (zero_count)
  3. win_count로 최저 랭킹을 계산한다.
  4. zero_count + win_count로 최고 랭킹을 계산한다.
  5. 3,4에서 랭킹 계산은 count가 0,1이면 6으로 설정하고 나머지는 7에서 일치하는 개수를 빼면된다.

풀이

def calc_rank(count):
    return 6 if count < 2 else 7 - count

def solution(lottos, win_nums):
    answer = []
    
    zero_count = 0
    win_count = 0
    
    for lotto in lottos:
        if lotto in win_nums:
            win_count +=1
        
        elif lotto == 0:
            zero_count += 1
    
    
    min_rank = calc_rank(win_count)
    max_rank = calc_rank(win_count + zero_count)
    
    answer = [max_rank, min_rank]
    
    return answer

결과는 통과

다른 사람의 풀이

def solution(lottos, win_nums):

    rank=[6,6,5,4,3,2,1]

    cnt_0 = lottos.count(0)
    ans = 0
    for x in win_nums:
        if x in lottos:
            ans += 1
    return rank[cnt_0 + ans],rank[ans]

나는 랭킹 계산을 하는 함수를 만들었는데
그냥 어차피 개수가 얼마 없으니 랭킹을 미리 계산해서 저장해두는 방법도 있었다.

profile
개발자

0개의 댓글