백준 2146(파이썬) - 다리만들기
resilient
·2021. 4. 5. 18:03
728x90
반응형
2146번: 다리 만들기
여러 섬으로 이루어진 나라가 있다. 이 나라의 대통령은 섬을 잇는 다리를 만들겠다는 공약으로 인기몰이를 해 당선될 수 있었다. 하지만 막상 대통령에 취임하자, 다리를 놓는다는 것이 아깝다
www.acmicpc.net
import sys
input = sys.stdin.readline
sys.setrecursionlimit(10000)
def dfs(i, j):
global minLength
if i <= -1 or i > n-1 or j <= -1 or j > n-1:
return
if graph[i][j] == 0:
return
for pre in range(0, num): # 1~(num-1)번
for x,y in island[pre]:
distance = abs(i-x) + abs(j-y) - 1
if distance < minLength:
minLength = distance
graph[i][j] = 0
island[num].append((i,j)) #좌표들을 섬의 번호에 맞게 리스트로 만들어준다.
dfs(i-1, j)
dfs(i+1, j)
dfs(i, j-1)
dfs(i, j+1)
n = int(input())
graph = []
for i in range(n):
graph.append(list(map(int, input().split())))
cnt = 0
num = 0
island = [[] for _ in range(100000)]
minLength = 10000
for i in range(n):
for j in range(n):
if graph[i][j] == 1:
num +=1
dfs(i,j)
print(minLength)
반응형
'자료구조 & 알고리즘 > 백준(Baekjoon)' 카테고리의 다른 글
백준 1561(파이썬) - 놀이공원 (0) | 2021.04.10 |
---|---|
백준 1939(파이썬) - 중량제한 (0) | 2021.04.05 |
백준 1916(파이썬) - 최소비용구하기 (0) | 2021.04.01 |
백준 2512(파이썬) - 예산 (0) | 2021.03.25 |
백준 10815(파이썬) - 숫자카드 (0) | 2021.03.20 |