난이도 : D3
문제번호 : 5209
※ 저의 풀이가 무조건적인 정답은 아닙니다.
다른 코드가 좀더 효율적이고 좋을 수 있습니다.
다른사람들의 풀이는 언제나 참고만 하시기 바랍니다.
문제 주소 및 출처입니다.
SW Expert Academy
SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!
swexpertacademy.com
목차
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 |
댓글