개발자 톡

연습문제 톡 루돌프 월드컵

완전 탐색인데 Subtask 1-3 안되는 이유가 잘 이해가 안가요

등록일
2024-07-21 00:10:59
조회수
293
작성자
sjpark1213
import sys

F_1, F_2, F_3, F_4 = map(int, input().split())

case = []
case_detail = []

A_case = [3, 1, 0]
B_case = [3, 1, 0]
C_case = [3, 1, 0]
D_case = [3, 1, 0]
E_case = [3, 1, 0]
F_case = [3, 1, 0]

for a in A_case:
    for b in B_case:
        for c in C_case:
            for d in D_case:
                for e in E_case:
                    for f in F_case:
                        pt = [0,0,0,0]
                        
                        if a == 3:
                            pt[0] += 3
                        elif a == 1:
                            pt[0] += 1
                            pt[1] += 1
                        else:
                            pt[1] += 3

                        if b == 3:
                            pt[0] += 3
                        elif b == 1:
                            pt[0] += 1
                            pt[2] += 1
                        else:
                            pt[2] += 3

                        if c == 3:
                            pt[0] += 3
                        elif c == 1:
                            pt[0] += 1
                            pt[3] += 1
                        else:
                            pt[3] += 3

                        if d == 3:
                            pt[1] += 3
                        elif d == 1:
                            pt[1] += 1
                            pt[2] += 1
                        else:
                            pt[2] += 3

                        if e == 3:
                            pt[1] += 3
                        elif e == 1:
                            pt[1] += 1
                            pt[3] += 1
                        else:
                            pt[3] += 3

                        if f == 3:
                            pt[2] += 3
                        elif f == 1:
                            pt[2] += 1
                            pt[3] += 1
                        else:
                            pt[3] += 3

                        case.append(pt)
                        case_detail.append([a, b, c, d, e, f])

def win_case(result):
    A_value = result[0]

    idx = 0
    for res in result:
        if res > A_value:
            idx += 1
    if idx < 2:
        return True
    else:
        return False

def possibility(detail):
    A_case, B_case, C_case, D_case, E_case, F_case = detail[0], detail[1], detail[2], detail[3], detail[4], detail[5]
    
    if A_case == 3:
        A_poss = (4 * F_1) / (5*F_1 + 5 *F_2)
    elif A_case == 1:
        A_poss = (F_1 + F_2) / (5*F_1 + 5 *F_2)
    else:
        A_poss = (4 * F_2) / (5*F_1 + 5 *F_2)
        
    if B_case == 3:
        B_poss = (4 * F_1) / (5*F_1 + 5 *F_3)
    elif B_case == 1:
        B_poss = (F_1 + F_3) / (5*F_1 + 5 *F_3)
    else:
        B_poss = (4 * F_3) / (5*F_1 + 5 *F_3)
    
    if C_case == 3:
        C_poss = (4 * F_1) / (5*F_1 + 5 *F_4)
    elif C_case == 1:
        C_poss = (F_1 + F_4) / (5*F_1 + 5 *F_4)
    else:
        C_poss = (4 * F_4) / (5*F_1 + 5 *F_4)

    if D_case == 3:
        D_poss = (4 * F_2) / (5*F_2 + 5 *F_3)
    elif D_case == 1:
        D_poss = (F_2 + F_3) / (5*F_2 + 5 *F_3)
    else:
        D_poss = (4 * F_3) / (5*F_2 + 5 *F_3)

    if E_case == 3:
        E_poss = (4 * F_2) / (5*F_2 + 5 *F_4)
    elif E_case == 1:
        E_poss = (F_2 + F_4) / (5*F_2 + 5 *F_4)
    else:
        E_poss = (4 * F_4) / (5*F_2 + 5 *F_4)
   
    if F_case == 3:
        F_poss = (4 * F_3) / (5*F_3 + 5 *F_4)
    elif F_case == 1:
        F_poss = (F_3 + F_4) / (5*F_3 + 5 *F_4)
    else:
        F_poss = (4 * F_4) / (5*F_3 + 5 *F_4)

    return A_poss * B_poss * C_poss * D_poss * E_poss * F_poss

ans = 0

for case_result, detail in zip(case, case_detail):    
    
    if win_case(case_result):
        ans += possibility(detail)

ans *= 100
ans = round(ans, 3)
print(ans)


단순히 완전 탐색 문제여서 모든 case 를 전부 조회하는 방식으로 계산했고

다른 나머지 case에서 맞은 것으로 봤을 때는 확률 계산 방법이 틀리지는 않은 것 같은데


Subtask 1 - 3 이 안 풀리는 이유가 잘 이해가 안 가네요..


혹시 아시는 분 계신가요? ㅠㅠ

#루돌프_월드컵
#완전_탐색

이 카테고리의 톡 더보기