개발자 톡
연습문제 톡
루돌프 월드컵
완전 탐색인데 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 이 안 풀리는 이유가 잘 이해가 안 가네요..
혹시 아시는 분 계신가요? ㅠㅠ
#루돌프_월드컵
#완전_탐색