백준15686(파이썬) - 치킨 배달
resilient
·2021. 5. 4. 02:04
728x90
반응형
15686번: 치킨 배달
크기가 N×N인 도시가 있다. 도시는 1×1크기의 칸으로 나누어져 있다. 도시의 각 칸은 빈 칸, 치킨집, 집 중 하나이다. 도시의 칸은 (r, c)와 같은 형태로 나타내고, r행 c열 또는 위에서부터 r번째 칸
www.acmicpc.net
import sys
input = sys.stdin.readline
from itertools import combinations
n, m = map(int,input().split())
graph = [list(map(int,input().split())) for _ in range(n)]
house = []
chicken = []
for i in range(n):
for j in range(n):
if graph[i][j] == 1:
house.append((i,j))
if graph[i][j] == 2:
chicken.append((i,j))
#치킨집을 어떻게 고를지 조합을 써서 pick_chicken에 담아둔다
pick_chicken = list(combinations(chicken,m))
ans = []
for i in pick_chicken: #조합해놓은 치킨집 좌표 를 돌리면서
total = 0
for j in house: # 저장해놓은 집의 좌표를 돌리면서
Min = 10001
for k in i: # 치킨집 좌표랑 집의 좌표를 빼주는데 여기서 최솟값을 찾는다
dist = abs(k[0]-j[0])+abs(k[1]-j[1])
Min = min(Min,dist)
total += Min
ans.append(total)
print(min(ans))
반응형
'자료구조 & 알고리즘 > 백준(Baekjoon)' 카테고리의 다른 글
백준11727(파이썬) - 2 x n 타일링2 (0) | 2021.05.14 |
---|---|
백준1931(파이썬) - 회의실 배정 (0) | 2021.05.06 |
백준2294(파이썬) - 동전2 (0) | 2021.05.04 |
백준 2293(파이썬) - 동전1 (0) | 2021.05.03 |
백준14888(파이썬) - 연산자 끼워넣기 (0) | 2021.05.02 |