시간 제한
메모리 제한
시간 제한
5초
메모리 제한
128 MB
N명의 학생과 N개의 문제가 있다. 각 학생은 정확히 한 문제를 맡고, 한 문제는 정확히 한 학생에게만 배정되어야 한다.
각 학생이 각 문제를 푸는 데 걸리는 시간은 서로 다를 수 있다. 예를 들어 다음 표에서 학생 1은 문제 1을 푸는 데 1시간이 걸리지만, 학생 2는 문제 1을 푸는 데 2시간이 걸린다.
| 문제 1 | 문제 2 | 문제 3 | |
|---|---|---|---|
| 학생 1 | 1 | 3 | 3 |
| 학생 2 | 2 | 3 | 3 |
| 학생 3 | 3 | 2 | 4 |
모든 학생에게 서로 다른 문제를 하나씩 배정했을 때, 학생들이 문제를 푸는 데 걸리는 시간의 합을 최소로 만들고 싶다. 위 표에서는 학생 1에게 문제 1, 학생 2에게 문제 3, 학생 3에게 문제 2를 배정하면 총 시간은 1 + 3 + 2 = 6이 되며, 이보다 더 작게 만들 수 없다.
각 학생이 각 문제를 푸는 데 걸리는 시간이 주어질 때, 모든 학생에게 서로 다른 문제를 하나씩 배정하여 가능한 총 시간의 최솟값을 구하라.
첫째 줄에 정수 N이 주어진다. (1 <= N <= 100)
다음 N개의 줄에는 각 학생이 N개의 문제를 푸는 데 걸리는 시간이 순서대로 주어진다. i번째 줄의 j번째 정수는 i번째 학생이 j번째 문제를 푸는 데 걸리는 시간이다.
주어지는 모든 정수는 1,000을 넘지 않는다.
각 학생에게 서로 다른 문제를 하나씩 배정했을 때 가능한 총 시간의 최솟값을 출력한다.