-
Notifications
You must be signed in to change notification settings - Fork 0
Open
Description
- 조합 함수 구현
### 조합 함수
def combinations(array, r):
for i in range(len(array)):
if r == 1:
yield [array[i]]
else:
for next in combinations(array[i+1:], r-1):
yield [array[i]] + next
# 치킨거리 -> 합 : 도시의 치킨거리
n, m = map(int, input().split())
a = [list(map(int, input().split())) for _ in range(n)]
store_lt = []
for i in range(n):
for j in range(n):
if a[i][j] == 2:
store_lt.append((i, j))
answer = -1
all_case = combinations(store_lt, m)
for case in all_case:
####print(case)
dist_list = []
# 계산 수행
for i in range(n):
for j in range(n):
if a[i][j] == 1:
mini = -1
for (x, y) in case:
dist = abs(i - x) + abs(j - y)
if mini == -1 or mini > dist:
mini = dist
dist_list.append(mini)
dist_sum = sum(dist_list)
if answer == -1 or answer > dist_sum:
answer = dist_sum
print(answer)
Metadata
Metadata
Assignees
Labels
No labels
