-
알고리즘: 백준 15686번 치킨 배달 (feat. python)알고리즘/백준(BaekJoon) 2021. 1. 17. 01:23
15686번: 치킨 배달
크기가 N×N인 도시가 있다. 도시는 1×1크기의 칸으로 나누어져 있다. 도시의 각 칸은 빈 칸, 치킨집, 집 중 하나이다. 도시의 칸은 (r, c)와 같은 형태로 나타내고, r행 c열 또는 위에서부터 r번째 칸
www.acmicpc.net
import sys from collections import deque from itertools import combinations import copy read = sys.stdin.readline N, M = map(int, read().split()) country = [] chick = [] for i in range(N): country.append(list(map(int, read().split()))) for j in range(N): if country[i][j] == 2: chick.append([0, i, j]) def bfs(): distance = 0 d = [[0, 1], [0, -1], [1, 0], [-1, 0]] visit = copy.deepcopy(country) while queue: cdist, crow, ccol = queue.popleft() if visit[crow][ccol] != -1: visit[crow][ccol] = -1 if country[crow][ccol] == 1: distance += cdist for i in range(4): nrow = crow + d[i][0] ncol = ccol + d[i][1] if 0 <= nrow < N and 0 <= ncol < N and visit[nrow][ncol] != -1: queue.append([cdist+1, nrow, ncol]) return distance min_distance = sys.maxsize for i in range(1, M+1): select_chick = list(combinations(chick, i)) while select_chick: queue = deque(select_chick.pop()) min_distance = min(min_distance, bfs()) print(min_distance)
반응형'알고리즘 > 백준(BaekJoon)' 카테고리의 다른 글
알고리즘: 백준 3190번 뱀 (feat. python) (0) 2021.01.20 알고리즘: 백준 2211번 네트워크 복구 (feat.python) (0) 2021.01.15 알고리즘: 백준 10282번 해킹 (feat. python) (0) 2021.01.15 알고리즘: 백준 11779번 최소비용 구하기2 (feat.python) (0) 2021.01.15 알고리즘: 백준 2665번 미로만들기 (feat.python) (0) 2021.01.13