반응형
이번 문제는 과거의 수학 공식을 더듬어 보는 문제였습니다.
축구 게임으로 축구 게임 시간은 총 90분이고 5분 간격으로 총 18번의 득점 기회가 주어졌을 때 한 팀이 소수 점수를 득점할 확률을 구하는 문제입니다. 이때 a, b 팀의 확률 퍼센트가 주어집니다.
해당 문제를 풀기 위해서는 확률을 구하는 공식을 알아야하는데 다음과 같습니다.
위 공식을 이해하기 위해서는 기본적으로 순열에 대해서도 알아야합니다.
순열이란? 서로 다른 n개의 값에서 r개를 뽑아 나열할 때 순서를 고려하지 않고, 중복없이 수를 의미합니다.
저 같은 경우 직접 계산하기보다는 파이썬에서 제공되는 라이브러리를 사용해주었습니다.
다음과 같은 코드를 통해 통과하였습니다.
import sys
input = sys.stdin.readline
from itertools import combinations, permutations
a = int(input())
b = int(input())
check = [2, 3, 5, 7, 11, 13, 17] # 소수
c = [ i for i in range(1, 19)]
pera = a/100.0
perb = b/100.0
sa = sb = 0
# 확률 구하는 공식
# p(k) = 18Ck * P**k * (1-p)**18-k
for i in range(len(check)):
# nC2 조합 n!/((n-r)! * r!)
combi = len(list(combinations(c, check[i]))) # 18Ck
sa += combi * pow(pera, check[i]) * pow(1.0-pera, 18-check[i])
sb += combi * pow(perb, check[i]) * pow(1.0-perb, 18-check[i])
print(sa+sb - sa*sb) # 두 팀이 동시에 소수 점수를 낼 확률을 빼주기
확률은 오랜만이여서 까먹었는데 이번 기회에 다시 외워야 할 필요성을 느꼈습니다.
뭔가 많이 쓰일 거 같은 공식이네요.
반응형
'알고리즘' 카테고리의 다른 글
[알고리즘/백준] 1430번 공격 Python 파이썬 (0) | 2023.03.17 |
---|---|
[알고리즘/백준] 1992번 쿼드 트리 Python 파이썬 (0) | 2023.03.17 |
[알고리즘/백준] 1103번 게임 Python 파이썬 (0) | 2023.03.13 |
[알고리즘/백준] 2615번 오목 Python 파이썬 (0) | 2023.03.12 |
[알고리즘/백준] 1485번 정사각형 Python 파이썬 (0) | 2023.03.10 |
댓글