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해서 활용할 수 있다는 점에서 유용한 라이브러리였다.
이후 코딩 문제를 해결할때 유용하게 활용할 수 있을거 같다.
'알고리즘 공부 > 백준' 카테고리의 다른 글
(Python)백준 코딩테스트 연습 - ABCDE(13023) (3) | 2023.08.27 |
---|---|
(Python)백준 코딩테스트 연습 - 럭키 세븐(28706) (0) | 2023.08.17 |
(Python)백준 코딩테스트 연습 - 탑(2493) (0) | 2023.08.08 |
(Python)백준 코딩테스트 연습 - 신기한 소수(2023) (0) | 2023.08.07 |
(Python)백준 코딩테스트 연습 - 집합의 표현(1717) (0) | 2023.08.07 |