백준 풀이

백준 2667번 파이썬 bfs, dfs

ag2개발자 2022. 8. 28. 03:24

bfs

from collections import deque
n= int(input())
board= []
cnt=0
cntarr=[]

for i in range(n):
  
    board.append(list(map(intinput())))

def bfs(graph,x,y):
  
    global cnt
    dx=[-1,1,0,0]
    dy=[0,0,-1,1]
    queue=deque()
    queue.append((x,y))
    cnt=1
    while queue:
        x,y=queue.popleft()
        graph[x][y]=0
        
      
        for j in range(4):
            nx=x+dx[j]
            ny=y+dy[j]
            if nx<0 or nx>=n or ny<0 or ny>=n:
                continue
            if graph[nx][ny]==1:
                graph[nx][ny]=0
                queue.append((nx,ny))
                cnt+=1
    return cnt

for p in range(n):
    for q in range(n):
        if board[p][q]==1:
            
            cntarr.append(bfs(board,p,q))
            
cntarr.sort()
print(len(cntarr))
for qw in range(len(cntarr)):
    print(cntarr[qw])

 

dfs

n=int(input())
arr=[]
board=[]
dx=[-1,1,0,0]
dy=[0,0,1,-1]
for _ in range(n):
    board.append(list(map(int,input())))

def dfs(x,y):
    global cnt
    if x<0 or x>=n or y<0 or y>=n:
        return False
    if board[x][y]:
        
        board[x][y]=0
        cnt+=1
        for i in range(4):
            nx=x+dx[i]
            ny=y+dy[i]
            dfs(nx,ny)
        return True
    return False
cnt=0
res=0
for p in range(n):
    for q in range(n):
        if dfs(p,q):
            res+=1
            arr.append(cnt)
            cnt=0
          
arr.sort()
print(res)
for t in range(len(arr)):
    print(arr[t])

'백준 풀이' 카테고리의 다른 글

백준 1149번 파이썬 dp  (0) 2022.08.28
백준 1260번 파이썬 dfs, bfs 개념  (0) 2022.08.28
백준 2606번 파이썬 bfs easy  (0) 2022.08.28
백준 2178번 파이썬 bfs easy  (0) 2022.08.27
백준 9095번 파이썬 (dp)  (0) 2022.08.27