난이도 : D3
문제번호 : 5209
※ 저의 풀이가 무조건적인 정답은 아닙니다.
다른 코드가 좀더 효율적이고 좋을 수 있습니다.
다른사람들의 풀이는 언제나 참고만 하시기 바랍니다.
문제 주소 및 출처입니다.
목차
1. 문제 설명
2. 문제 해석
3. 소스 코드
1. 문제 설명
A사는 여러 곳에 공장을 갖고 있다. 봄부터 새로 생산되는 N종의 제품을 N곳의 공장에서 한 곳당 한가지씩 생산하려고 한다. 각 제품의 공장별 생산비용이 주어질 때 전체 제품의 최소 생산 비용을 계산하는 프로그램을 만드시오. 예를 들어 3개의 제품을 생산하려는 경우 각 공장별 생산비용은 다음과 같이 주어진다. 이때 1-C, 2-A, 3-B로 제품별 생산 공장을 정하면 생산 비용이 21+11+31=63으로 최소가 된다. |
입력
첫 줄에 테스트케이스의 수 T가 주어진다. 1<=T<=50 |
출력
각 줄마다 "#T" (T는 테스트 케이스 번호)를 출력한 뒤, 답을 출력한다. |
예시
입력 | 출력 |
3 3 73 21 21 11 59 40 24 31 83 5 93 4 65 31 66 63 12 60 60 84 87 57 44 35 20 12 9 40 12 40 60 21 3 49 54 6 55 83 32 79 53 70 77 88 80 93 42 29 54 26 5 10 25 94 77 92 82 83 11 51 84 11 21 62 45 58 37 88 13 34 41 4 |
#1 63 #2 78 #3 129 |
2. 문제풀이
전기버스 2와 같은 유형이다. |
3. 소스코드
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
|
#D3 5209 최소 생산비용
def dfs(idx, _sum):
global answer
if _sum >= answer:
return
if idx == N:
answer = _sum
for i in range(N):
if visited[i]:
visited[i] = 0
dfs(idx+1, _sum + V[idx][i])
visited[i] = 1
for t in range(int(input())):
N = int(input())
V = [list(map(int, input().split())) for _ in range(N)]
visited = [1 for _ in range(N)]
answer = 999999
dfs(0, 0)
print('#{} {}'.format(t+1, answer))
|
'코딩테스트 > SWExpertAcademy' 카테고리의 다른 글
최소비용 Python(SW Expert Academy, SWEA) (0) | 2020.05.26 |
---|---|
그룹 나누기 Python(SW Expert Academy, SWEA) (0) | 2020.05.25 |
전기버스2 Python(SW Expert Academy, SWEA) (0) | 2020.05.23 |
베이비진 게임 Python(SW Expert Academy, SWEA) (0) | 2020.05.22 |
화물 도크 Python(SW Expert Academy, SWEA) (0) | 2020.05.21 |
댓글