본문 바로가기
Algorithm/baekjoon

[파이썬]baekjoon 3980: 선발 명단

by 갈잃자 2023. 3. 7.

https://www.acmicpc.net/problem/3980

 

3980번: 선발 명단

각각의 테스트 케이스에 대해서, 모든 포지션의 선수를 채웠을 때, 능력치의 합의 최댓값을 한 줄에 하나씩 출력한다. 항상 하나 이상의 올바른 라인업을 만들 수 있다.

www.acmicpc.net


브루스포스 문제

 

입력이 최대 11 *11 배열이므로 따로 dp를 쓸 필요없이 브루스포스로 풀었다.

 

전체 배열 돌면서 가장 수치가 높은 포메이션을 짜면 됨!

def dfs(level, path):
    global Max
    if level ==11:
        Max = max(sum(path), Max)
        return

    for i in range(len(arr[level])):
        if arr[level][i] == 0: continue
        if visit[i] == 1: continue
        visit[i] = 1
        dfs(level+1, path + [arr[level][i]])
        visit[i] = 0

t = int(input())
for tc in range(t):
    arr = [list(map(int,input().split()))for _ in range(11)]
    Max = 0
    visit = [0]*11
    dfs(0,[])
    print(Max)

댓글