[プログラマーLv 1]楽透の最高と最低順位(python)


質問する
https://programmers.co.kr/learn/courses/30/lessons/77484
マイコード
"""
1. 아이디어
맞춘 개수에 따라 해당하는 순위를 딕셔너리 안에 넣고 마지막에 참조하는 식으로 작성한다.

2. 시간복잡도
O(N)
"""

def solution(lottos, win_nums):
    
    result = []
    
    ranking = {0:6, 1:6, 2:5, 3:4, 4:3, 5:2, 6:1}
    success_num = 0
    unknown_num = 0
    fail_num = 0
    
    for num in lottos:
        if num in win_nums:
            success_num += 1
        elif num == 0:
            unknown_num += 1
        else:
            fail_num += 1
    
    success_num += unknown_num # 알아볼 수 없는 번호는 전부 당첨이라고 가정
    
    result.append(ranking[success_num])
    result.append(ranking[6-unknown_num-fail_num])
    
    return result
    
他人のコード
"""
1. 아이디어
깔끔하지만 결국 내 것과 같은 생각과 알고리즘이다.
"""

def solution(lottos, win_nums):
    
    zero_cnt = lottos.count(0)
    ans = 0
    
    rank = [6, 6, 5, 4, 3, 2, 1]
    
    for x in win_nums:
        if x in lottos:
            ans += 1
            
    return rank[zero_cnt + ans], rank[ans]
    
に感銘を与える
思考は重要な問題だ.