코테 공부/Python 문법

Python 로또의 최고 순위와 최저 순위[lv.1]

prefer_all 2022. 6. 22. 09:36

핵심 단계

1. 0의 갯수 / 2. 현 상태에서 당첨 번호와 일치하는 개수 구하기 / 3. 등수 반환

 

나의 풀이

def solution(lottos, win_nums):
    answer = []
    lottos.sort()
    win_nums.sort()
    zero=0
    for lotto in lottos:
        if lotto == 0:
            zero+=1
            
    n = 0
    for lotto in lottos:
        for ans in win_nums:
            if lotto == ans:
                n+=1
    
    if (n+zero)!=0:
        answer.append(7-(n+zero))
    else:
        answer.append(6)
    
    if n!=0:
        answer.append(7-n)
    else:
        answer.append(6)
        
    return answer

추가 고려사항: 마지막에 반환할 때 값이 0이라면(0개가 일치한다면) 7을 반환하므로 따로 처리

좋은 접근방식: sorting하고 시작 - 이유: 0의 갯수에 따라 최대, 최소 

 


다른 사람의 풀이

def solution(lottos, win_nums):

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

    cnt_0 = lottos.count(0)    # lottos 안의 0의 개수를 반환
    ans = 0
    for x in win_nums:
        if x in lottos:
            ans += 1
            
    return rank[cnt_0 + ans],rank[ans]

배울 점: 1. 깔끔한 랭킹 처리(맞힌 수에 따른 등수를 미리 매칭해둠  ex) rank[6] = 1. 6개 숫자를 맞추면 1등)

2. 그로 인한 간단한 반환

'코테 공부 > Python 문법' 카테고리의 다른 글

구현 문제: 시각, 왕실의 나이트  (0) 2022.07.01
Python: bool, list 복사, 변수 생성  (0) 2022.06.22
Python set 내장 함수  (0) 2022.06.21
Python 자료형: Dict, Set  (0) 2022.06.21
Python Dict 내장 함수  (0) 2022.06.21