해야만 한다
[Python] 백준 15686. 치킨배달 본문
https://www.acmicpc.net/problem/15686
풀이
집과 치킨집의 좌표를 저장해두고
치킨집 m개로 만들 수 있는 조합을 활용하여 치킨 거리가 최소가 되는 조합을 구한다.
코드
from itertools import combinations
import sys
input = sys.stdin.readline
n, m = map(int, input().split())
arr = [list(map(int, input().split())) for _ in range(n)]
house = []
chick = []
for i in range(n):
for j in range(n):
# 집이면
if arr[i][j] == 1:
# 좌표를 저장한다
house.append((i,j))
elif arr[i][j] == 2:
# 좌표를 저장한다
chick.append((i,j))
comb = tuple(combinations(chick,m))
temp_ls = []
for i in comb:
temp = 0
for k in house:
min_val = int(1e9)
for j in i:
min_val = min(min_val, abs(k[0]-j[0]) + abs(k[1]-j[1]))
temp += min_val
temp_ls.append(temp)
print(min(temp_ls))
'Python > Algorithm' 카테고리의 다른 글
[Python] 백준 16236. 아기 상어 (0) | 2023.10.25 |
---|---|
[Python] 백준 17144. 미세먼지 안녕! (0) | 2023.10.23 |
[Python] 백준 12919. A와 B 2 (0) | 2023.10.18 |
[Python] 백준 1715. 카드 정렬하기 (0) | 2023.10.18 |
[Python] 백준 1103. 게임 (0) | 2023.10.18 |