1. 음료수 얼려먹기
(1) 문제
(2) DFS 이용
1)
def DFS(graph, r,c, N,M):
graph[r][c]=1
#상하좌우
dx=[-1,1,0,0]
dy=[0,0,-1,1]
for i in range(4):
x= r+dx[i]
y= c+dy[i]
if(x<0 or y<0 or x>=N or y>=M):
continue
elif(graph[x][y]!=1):
DFS(graph, x, y, N,M)
return True
def main():
N,M = map(int, input().split())
graph = []
for i in range(N):
graph.append(list(map(int,list(input()))))
cnt=0
for i in range(N):
for j in range(M):
if(graph[i][j]!=1):
if(DFS(graph,i,j,N,M)==True):
cnt+=1
print(cnt)
if __name__=="__main__":
main()
2)
def DFS(graph, r,c, N,M):
if(r<0 or c<0 or r>=N or c>=M):
return False
elif (graph[r][c]==1):
return False
elif(graph[r][c]==0):
graph[r][c]=1
#상하좌우
DFS(graph, r-1, c, N,M )
DFS(graph, r+1, c, N,M)
DFS(graph, r, c-1, N,M)
DFS(graph, r, c+1, N,M)
return True
return False
def main():
N,M = map(int, input().split())
graph =[]
for i in range(N):
graph.append(list(map(int, list(input()))))
cnt=0
for i in range(N):
for j in range(M):
if(DFS(graph, i,j,N,M)==True):
cnt+=1
print(cnt)
if __name__=="__main__":
main()
2. 미로 탈출
from collections import deque
def BFS(graph, N,M, visited):
queue = deque()
r=0
c=0
#상하좌우
dx = [-1,1,0,0]
dy=[0,0,-1,1]
queue.append([r,c])
while(queue):
now=queue.popleft()
r = now[0]
c= now[1]
if(visited[r][c]==True):
continue
visited[r][c]=True
for i in range(4):
x= r+dx[i]
y= c+dy[i]
if(x<0 or y<0 or x>=N or y>=M):
continue
elif(visited[x][y]==True):
continue
elif(graph[x][y]!=0):
graph[x][y]=graph[r][c]+1
queue.append([x,y])
for i in range(N):
for j in range(M):
print(graph[i][j], end=" ")
print("")
def main():
N,M = map(int, input().split())
graph = []
for i in range(N):
graph.append(list(map(int, list(input()))))
visited =[[False]*M for _ in range(N)]
BFS(graph, N,M, visited)
print(graph[N-1][M-1])
if __name__=="__main__":
main()
'Python > 알고리즘' 카테고리의 다른 글
[Python]바이너리 인덱스 트리(Binary Indexed Tree) (2) | 2023.10.10 |
---|---|
[Python]기타 알고리즘 (0) | 2023.10.06 |
[Python]최단 경로 알고리즘 : Dijkstra Algorithm, Floyd Washall (0) | 2023.09.26 |
이진탐색(Binary Search) (0) | 2023.09.19 |
DFS&BFS[python] (0) | 2023.09.04 |