문제
https://www.acmicpc.net/problem/3980
3980번: 선발 명단
각각의 테스트 케이스에 대해서, 모든 포지션의 선수를 채웠을 때, 능력치의 합의 최댓값을 한 줄에 하나씩 출력한다. 항상 하나 이상의 올바른 라인업을 만들 수 있다.
www.acmicpc.net
설계
- dfs를 들어가며 11명의 선수를 확인한다.
- 자리가 배치된 선수 번호를 visit 배열에 추가 및 삭제하며 한 번호당 한명씩만 들어가게 한다.
파이썬
def dfs(sumV, level):
global maxV, visit
if level == 11:
if maxV < sumV:
maxV = sumV
return
for i in range(11):
if arr[level][i] and i not in visit:
visit.append(i)
dfs(sumV + arr[level][i], level + 1)
visit.pop()
N = int(input())
for _ in range(N):
arr = [list(map(int, input().split())) for _ in range(11)]
maxV, visit = 0, []
dfs(0, 0)
print(maxV)
'PS (Problem Solving) > Baekjoon' 카테고리의 다른 글
[백준] 1032. 명령 프롬프트 - 파이썬 (0) | 2023.03.07 |
---|---|
[백준] 1283. 단축키 지정 - 파이썬 (0) | 2023.03.07 |
[백준] 2302. 극장 좌석 - 파이썬 (0) | 2023.03.02 |
[백준] 2304. 창고 다각형 - 파이썬 (0) | 2023.03.02 |
[백준] 1158. 요세푸스 문제 - 파이썬 (0) | 2023.02.28 |