얼레벌레

[Baekjoon] 축구 본문

Coding Test

[Baekjoon] 축구

낭낭이 2022. 3. 14. 00:03

백준 #1344 축구

문제

홍준이는 축구 경기를 보고 있다. 그러다가 홍준이는 역시 두 팀 중 적어도 한 팀이 골을 소수로 득점할 확률이 궁금해 졌다. 축구 경기는 90분동안 이루어지고, 분석을 쉽게하기 위해서 경기를 5분 간격으로 나눴다. 처음 간격은 처음 5분이고, 두 번째 간격은 그 다음 5분, 그리고 이런식으로 나눈다. 경기가 진행되는 동안 각 간격에서 A팀이 득점할 확률과 B팀이 득점할 확률이 주어진다. 그리고, 각 간격에서 두 팀은 각각 많아야 한 골을 득점할 수 있다. 경기가 끝난 후 적어도 한 팀이 골을 소수로 득점할 확률을 구하시오.

입력

첫째 줄에 A팀이 득점할 확률, 둘째 줄에 B팀이 득점할 확률이 퍼센트 단위로 주어진다. 퍼센트 단위로 주어지는 확률은 모두 0보다 크거나 같고 100보다 작거나 같은 정수이다.

출력

첫째 줄에 적어도 한 팀이 골을 소수로 득점할 확률을 출력한다. 정답과의 절대/상대 오차가 10-6이내인 경우에 정답이다.

예제 입력 1 복사

50
50

예제 출력 1 복사

0.5265618908306351

예제 입력 2 복사

100
100

예제 출력 2 복사

0.0

예제 입력 3 복사

12
89

예제 출력 3 복사

0.6772047168840167

 

✔️ 내가 쓴 코드

p_a,p_b=int(input())/100,int(input())/100

def f(n):
  if (n==1)|(n==0):
    return 1
  return n*f(n-1)

def prob(p_a,p_b):
  p,n=0,18
  not_prime=[0,1,4,6,8,9,10,12,14,15,16,18]
  for i in not_prime:
    for j in not_prime:
      p+=f(n)/(f(i)*f(n-i))*(p_a**i)*((1-p_a)**(n-i))*f(n)/(f(j)*f(n-j))*(p_b**j)*((1-p_b)**(n-j))
  return 1-p

print(prob(p_a,p_b))

 

- 적어도 한팀이 소수로 득점할 확률을 구해야 하므로 A,B팀 모두가 소수가 아닌(합성수 혹은 0,1)로 득점할 확률을 전체 확률 1에서 빼주면 된다.

- 첫 골드4 문젠데 통계학과라 그런지 나한텐 쉬웠다 ^.^ 넘 뿌듯 퍄퍄 근데 다른 골드 문젠 아직 어려워잉 ㅠ

'Coding Test' 카테고리의 다른 글

[Baekjoon] 회의실 배정  (0) 2022.03.22
[Baekjoon] 베스트셀러  (0) 2022.03.20
[Baekjoon] 골드바흐의 추측  (0) 2022.03.03
[Baekjoon] 크로아티아 알파벳  (0) 2022.02.22
[Baekjoon] 문자열 반복  (0) 2022.02.19
Comments