Fantastic Chu's World
[백준][Python] 15686번 : 치킨 배달 본문
from itertools import combinations
import math
import sys
n,m = map(int, sys.stdin.readline().split())
# 각 집 위치마다 모든 치킨집 거리 계산 후 최소값 반환
def get_distance(select, home):
answer = 0
for hx, hy in home:
ans_min = math.inf #무한값 넣기
for x, y in select:
if abs(hx-x)+abs(hy-y) < ans_min:
ans_min = abs(hx-x)+abs(hy-y)
answer += ans_min
return answer
home, chi = [], []
# 집 위치, 치킨집 위치
for i in range(n):
alist = list(map(int,sys.stdin.readline().split()))
for j in range(len(alist)):
if alist[j] == 1:
home.append((i,j))
elif alist[j] == 2:
chi.append((i, j))
select = list(combinations(chi,m))
# 거리의 최솟값
res_min = math.inf
for i in select:
result = get_distance(list(i),home)
if res_min > result:
res_min = result
print(res_min)
꺠달은 점: sys.stdin.readline().split() 은 input().split()보다 빠르다
'Python > 구현' 카테고리의 다른 글
[2020KAKAO][Python] 자물쇠와 열쇠 (구현, 완전탐색) (0) | 2020.09.12 |
---|---|
[2020KAKAO][Python] 기둥과 보 설치 (0) | 2020.09.12 |
[2020KAKAO][Python] 문자열 압축 (0) | 2020.09.12 |
[2020KAKAO][Python] 괄호 변환 (0) | 2020.09.11 |
[백준][Python] 2846번 : 오르막 길 (0) | 2020.09.09 |
Comments