Notice
Recent Posts
Recent Comments
Link
할껀하고놀자
[SW역량테스트준비] 치킨 배달 본문
728x90
import sys
sys.stdin = open('input.txt')
n,m = map(int,input().split())
a = [list(map(int,input().split())) for _ in range(n)]
chi,home = [],[]
select = []
def init():
global select
for i in range(n):
for j in range(n):
if a[i][j]==1:
home.append((i,j))
if a[i][j]==2:
chi.append((i,j))
select = [False]*len(chi)
# 집과 치킨집사이의 최소값을 구하고, 그 최소값을 모두 더한 최종 값이 가장 작은걸 구하면 된다.
def solve2(tmp_chi):
global ans
re = 0
for i in home:
hx,hy = i
tmp = 10**9
for j in tmp_chi:
cx,cy = j
tmp = min(tmp,abs(hx-cx)+abs(hy-cy))
re += tmp
ans = min(ans,re)
def solve(idx,cnt,d):
if cnt==m:
tmp = []
for i in range(d):
if select[i]:
x,y = chi[i]
tmp.append((x,y))
solve2(tmp)
return
for i in range(idx,d):
if not select[i]:
select[i] = True
solve(i+1,cnt+1,d)
select[i] = False
init()
ans = 10**9
solve(0,0,len(chi))
print(ans if ans!=10**9 else -1)
'[IT]' 카테고리의 다른 글
[SW역량테스트준비] 낚시왕 (0) | 2019.10.19 |
---|---|
[SW역량테스트준비] 캐슬 디펜스 (0) | 2019.10.19 |
[SW역량테스트준비] 연구소 3 (0) | 2019.10.13 |
[SW역량테스트준비] 아기상어 (0) | 2019.10.13 |
[C++]define와 typedef의 차이점 (0) | 2018.02.15 |
Comments