알고리즘
[백준/Python] 16501. 만족도 점수
스연
2023. 9. 25. 10:48
728x90
1. 백준 16501. 만족도 점수 (실2)
https://www.acmicpc.net/problem/16501
16501번: 만족도 점수
테니스 동호회 회장은 매주 참가 회원들이 만족할 만 하도록 2대 2 복식 조들을 짜야 한다. 각 회원은 참여한 게임이 대등하게 펼쳐졌을 수록 만족도가 높다. 참가 회원들의 실력 점수는 0 이상 10
www.acmicpc.net
풀이
CODE
import sys
from itertools import permutations
input = sys.stdin.readline
scores = list(map(int, input().split()))
# 모든 경우를 고려하기 위한 순열 생성
perms = list(permutations(scores))
# 만족도 점수를 구하는 함수
def get_satisfaction(team_score_list):
return 1 - (abs((team_score_list[0] + team_score_list[1]) / 2 - (team_score_list[2] + team_score_list[3]) / 2) / 10)
answer = 0
for per in perms:
team1_satisfaction = get_satisfaction(per[:4])
team2_satisfaction = get_satisfaction(per[4:])
min_satisfaction = min(team1_satisfaction, team2_satisfaction)
# 팀의 최솟값이 증가하면 갱신
if answer < min_satisfaction:
answer = min_satisfaction
print(answer)
- 모든 점수를 고려해야하는데 이를 어떻게 구현할 수 있을지 고민이 많았다.
- 오히려 다른 골드 문제보다 접근법을 해맨 것 같다.
- 입력이 8개 밖에 안 주어지는 상황이므로 이럴 때는 permutation, combination 등을 적극적으로 떠올리고 활용하자.
728x90