알고리즘

[백준/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