import sys
from itertools import combinations
sys.stdin = open( "input.txt", "r")
n, m = map( int, input().split() )
city = list( list(map(int, input().split())) for _ in range( n ))
result = 999999
house = []
chicken = []
for i in range(n):
for j in range(n):
if city[i][j] == 1:
house.append( [i, j] ) # 집 좌표 저장
elif city[i][j] == 2:
chicken.append( [i, j]) # 치킨집 좌표 저장
def solve( ):
global result
for chi in combinations( chicken, m ): # m개의 치킨집 선택
minSum = 0
for hou in house: # 전체 집 탐색
minValue = 999
for i in range(m):
minValue = min( minValue , abs( hou[0] - chi[i][0] ) + abs( hou[1] - chi[i][1] ) )
minSum += minValue # m개의 치킨집 중 가장 가까운거리 탐색
result = min( result, minSum )
return result
solve()
print( result )
'Algorithm' 카테고리의 다른 글
[BaekJoon] 백준 알고리즘 11724번 / 연결 요소의 개수 / DFS / Python (0) | 2023.03.11 |
---|---|
[BaekJoon] 백준 알고리즘 6603번 / 로또 / 백트래킹(DFS) / Python (0) | 2023.03.10 |
[BaekJoon] 백준 알고리즘 1759번 / 암호 만들기 / 백트래킹(DFS) / Python (1) | 2023.03.07 |
[BaekJoon] 백준 알고리즘 14889번 / 스타트와 링크 / 백트래킹(DFS) / Python (0) | 2023.03.07 |
[BaekJoon] 백준 알고리즘 1697번 / 숨바꼭질 / BFS / Python (0) | 2023.03.04 |
댓글