728x90
반응형
BaekJoon 백준 11070 피타고라스 기댓값 문제는 전체 야구 경기에 대한 정보인 n개의 팀의 득점과 실점 기록이 주어지면, 이 기록으로부터 팀 별 피타고라스 기댓값을 계산한 후, 그중 최대 기댓값과 최소 기댓값을 출력하는 문제이다. 난이도는 Bronze 1이다.
BaekJoon 11070 피타고라스 기댓값 문제 정보
출처
- https://www.acmicpc.net/problem/11070
알고리즘 분류
- 시뮬레이션, 수학, 구현
난이도
- 브론즈 1 / Bronze 1
피타고라스 기댓값 문제 요약
- 피타고라스 기댓값은 특정 야구팀이 한 시즌 동안 얼마나 잘했는지를 평가하는 지표 중 하나로 사용된다. 한 야구팀의 피타고라스 기댓값 W는 아래 식과 같이 정의된다.
- W = S² / ( S² + A² )
- 여기서 S는 해당 팀의 총 득점 수를, A는 해당 팀의 총 실점 수를 나타낸다.
- n개의 팀에 대한 기록이 주어지면, 이 기록으로부터 팀 별 피타고라스 기댓값을 계산한 후, 그중 최대 기댓값과 최소 기댓값을 구하여 출력한다.
- 피타고라스 기댓값에 1,000을 곱한 값의 정수 부분을 출력한다.
- 첫 줄에는 두 양의 정수 n (2 ≤ n ≤ 1,000)과 m (2 ≤ m ≤ 1,000)이 주어진다. 여기서, n은 팀 개수이며, m은 전체 경기 수이다.
- 하나의 경기는 네 개의 정수 a, b, p, q로 주어지는데, 팀 a와 팀 b가 경기를 했고, 팀 a는 p득점을 팀 b는 q득점을 했다는 의미이다. 여기서, 1 ≤ a ≠ b ≤ n이며, p와 q는 모두 음이 아닌 20 이하의 정수이다.
- 하나의 테스트 데이터에서 팀 당 경기수가 반드시 같을 필요는 없다. 만약, 어떤 팀의 총 득점과 총실점이 모두 0이라면, 그 팀의 기댓값은 0으로 정의한다.
문제 풀이 과정
- 경기의 정보를 입력받는다.
- 팀별로 득점과 실점을 나눠서 저장한다.
- 팀별 기댓값을 구한다.
- 모든 팀 중에서 최대의 기댓값과 최소의 기댓값에 1000을 곱하여 출력한다.
코드 및 설명
for _ in range(int(input())):
n, m = map(int, input().split()) # 팀 개수, 전체 경기 수
gameScore = [[0, 0] for _ in range(n)] # 팀 별 득점, 실점
W = [] # 팀 별 기댓값
for _ in range(m):
a, b, p, q = map(int, input().split())
gameScore[a - 1][0] += p # a의 득점
gameScore[a - 1][1] += q # a의 실점
gameScore[b - 1][0] += q # b의 득점
gameScore[b - 1][1] += p # b의 실점
# 팀 별 기댓값 구하기
for i in range(n):
if gameScore[i][0] == 0 and gameScore[i][1] == 0:
W.append(0)
else:
W.append(1000 * gameScore[i][0] ** 2 / (gameScore[i][0] ** 2 + gameScore[i][1] ** 2))
print(int(max(W)))
print(int(min(W)))
BaekJoon 백준 11070 피타고라스 기댓값 문제를 파이썬 python으로 풀어보았다. 난이도는 Bronze 브론즈 1이다.
728x90
반응형
'Algorithm Problem Solving > BaekJoon' 카테고리의 다른 글
[BaekJoon] 백준 9047 6174 (Python / 파이썬) (0) | 2021.08.27 |
---|---|
[BaekJoon] 백준 1296 데이트 (Python / 파이썬) (0) | 2021.08.27 |
[BaekJoon] 백준 14647 준오는 조류혐오야!! (Python / 파이썬) (0) | 2021.08.26 |
[BaekJoon] 백준 17294 귀여운 수~ε٩(๑> ₃ <)۶з (Python / 파이썬) (0) | 2021.08.26 |
[BaekJoon] 백준 17269 이름궁합 테스트 (Python / 파이썬) (0) | 2021.08.25 |
댓글