알고리즘 공부/백준
(Python)백준 코딩테스트 연습 - 치킨 배달(15686)
HRuler
2023. 8. 13. 16:34
1. 문제
https://www.acmicpc.net/problem/15686
15686번: 치킨 배달
크기가 N×N인 도시가 있다. 도시는 1×1크기의 칸으로 나누어져 있다. 도시의 각 칸은 빈 칸, 치킨집, 집 중 하나이다. 도시의 칸은 (r, c)와 같은 형태로 나타내고, r행 c열 또는 위에서부터 r번째 칸
www.acmicpc.net
2. 풀이
# 백준 15686번 : 치킨 배달
# 입력 코드
import sys
input = sys.stdin.readline
from itertools import combinations
# n : 도시의 수
# m : 폐업시키지 않을 치킨집 수
n, m = map(int, input().split())
# nList : 도시 정보 배열
nList = [list(map(int, input().split())) for i in range(n)]
home = []
chicken = []
for i_k, i_v in enumerate(nList):
for j_k, j_v in enumerate(i_v):
if j_v == 1:
home.append([i_k, j_k])
elif j_v == 2:
chicken.append([i_k, j_k])
minDist = 10000
for i in combinations(chicken, m):
tempDist = 0
for j in home:
chickenDist = 100
for store in i:
chickenDist = min(chickenDist, abs(j[0] - store[0]) + abs(j[1] - store[1]))
tempDist += chickenDist
minDist = min(minDist, tempDist)
print(minDist)
3. Feedback
- 이번 문제에서는 처음으로 itertools라는 라이브러리를 처음으로 사용했다.
반복문을 필요한 형태로 Customizing해서 활용할 수 있다는 점에서 유용한 라이브러리였다.
이후 코딩 문제를 해결할때 유용하게 활용할 수 있을거 같다.