문제
https://www.acmicpc.net/problem/15686
코드
import sys
from itertools import combinations
input=sys.stdin.readline
n,m=map(int, input().split())
array=[list(map(int, input().split())) for _ in range(n)]
chi=[]
for i in range(n):
for j in range(n):
if array[i][j]==2:
chi.append([i,j])
home=[]
for i in range(n):
for j in range(n):
if array[i][j]==1:
home.append([i,j])
result=[[0]*len(chi) for _ in range(len(home))]
for i in range(len(home)):
for j in range(len(chi)):
a,b=home[i]
c,d=chi[j]
result[i][j]=abs(a-c)+abs(b-d)
temp1=0
ans=10000
com=(list(combinations(range(0,len(chi)),m)))
for k in range(len(com)):
for i in range(len(home)):
temp=10000
for j in range(len(chi)):
if j in com[k]:
temp=min(temp, result[i][j])
temp1+=temp
ans=min(ans,temp1)
temp1=0
print(ans)
'문제풀이 > 구현' 카테고리의 다른 글
[파이썬] [구현] 백준 20055 컨베이어 벨트 위의 로봇 (0) | 2023.01.18 |
---|---|
[PyPy] [구현] 백준 16235 나무 재테크 (0) | 2022.05.28 |
[파이썬] [구현] 백준 5430 AC (0) | 2022.04.28 |
* [파이썬] [구현] 백준 17779 게리멘더링2 (0) | 2022.01.05 |
[파이썬] [구현] 백준 2908 상수 (0) | 2022.01.02 |