728x90
📌 문제
https://swexpertacademy.com/main/main.do
📌 문제 접근 방법
- 순열이 필요할 것 같아서 itrertools에서 permutations를 import했더니 시간초과!
- 재귀를 사용해서 순열을 직접 구현해줬더니 통과했다.
- 비용을 더한 값이 이미 최소 값보다 커졌다면 return을 해줘서 가지치기를 해줬다.
📌 코드
import sys
sys.stdin = open('input.txt')
def permutation(total):
global factory, min_cost
if total > min_cost:
return
if len(factory) == N:
min_cost = min(min_cost, total)
return
else:
for i in range(N):
if i not in factory:
factory.append(i)
permutation(total + cost[len(factory)-1][factory[-1]])
factory.pop()
T = int(input())
for t in range(1, T+1):
N = int(input())
cost = [list(map(int, input().split())) for _ in range(N)]
factory = []
min_cost = float('inf')
permutation(0)
print('#{} {}'.format(t, min_cost))
728x90
'ALGORITHM > SW Expert Academy' 카테고리의 다른 글
[SWEA/Python] 4366. 정식이의 은행업무 (0) | 2021.10.08 |
---|---|
[SWEA/Python] 1865. 동철이의 일 분배 (0) | 2021.10.07 |
[SWEA/Python] 5208. 전기버스2 (0) | 2021.10.07 |
[SWEA/Python] 5207. 이진탐색 (0) | 2021.10.07 |
[SWEA/Python] 1244. 최대 상금 (0) | 2021.10.04 |
댓글