[PRO] 양궁대회

천호영·2022년 7월 7일
0

알고리즘

목록 보기
28/100
post-thumbnail
from itertools import combinations_with_replacement
from collections import Counter, defaultdict
import sys

def counter_to_list(counter):
    new_list = [0]*11
    for k,v in counter.items():
        new_list[k] = v
    return new_list
        

def solution(n, info):
    apeach_info = info[::-1] # 인덱스가 몇점인지
    
    # 중복 조합 구하기
    lion_shots = list(combinations_with_replacement(list(range(11)), n))
    
    global_gap = -sys.maxsize
    global_lion_gap_key_dict = defaultdict(list)
    
    
    for lion_shot in lion_shots:
        lion_info_counter = Counter(lion_shot) # key가 몇점인지

        lion_score = 0
        apeach_score = 0
        for i in range(11): # 0 ~ 10
            if apeach_info[i]==0 and lion_info_counter[i]==0:
                continue
            elif apeach_info[i] < lion_info_counter[i]:
                lion_score += i
            else:
                apeach_score += i
                
        gap = lion_score - apeach_score
        if global_gap <= gap:
            global_gap = gap
            global_lion_gap_key_dict[global_gap].append(counter_to_list(lion_info_counter))
    
    if global_gap <= 0:
        return [-1]
    else:
        return max(global_lion_gap_key_dict[global_gap])[::-1]
        
        
    return None
profile
성장!

0개의 댓글