728x90
https://www.acmicpc.net/problem/15686
💡 문제 풀이
기본적인 구현, DFS 문제이다.
✔️ 느낀 점
💻 코드
import sys
from itertools import combinations
input = sys.stdin.readline
N, M = map(int, input().split())
board = [list(map(int, input().split())) for _ in range(N)]
chicken = []
for i in range(N):
for j in range(N):
if board[i][j] == 2:
chicken.append([i,j])
def calc(chicken):
dist = 0
for i in range(N):
for j in range(N):
if board[i][j] == 1:
min_ = sys.maxsize
for x, y in chicken:
d = abs(i - x) + abs(j - y)
min_ = min(min_, d)
dist += min_
return dist
answer = sys.maxsize
for c in combinations(chicken, M):
answer = min(answer, calc(c))
print(answer)
'문제 풀이 > 백준(BOJ)' 카테고리의 다른 글
[Python] 백준 14499번 : 주사위 굴리기 (0) | 2023.03.02 |
---|---|
[Python] 백준 25341번 : 인공 신경망 (0) | 2023.03.01 |
[Python] 백준 1520번 : 내리막 길 (0) | 2023.02.26 |
[Python] 백준 17396번 : 백도어 (0) | 2023.02.25 |
[Python] 백준 1956번 : 운동 (0) | 2023.02.23 |
댓글