1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
|
# 1. bfs
# 2. Python 60 ms
dx = [1,0,-1,0]
dy = [0,1,0,-1]
def bfs(start):
queue =[start]
length = 1
board[start[0]][start[1]]='2'
while queue:
point = queue.pop()
for i in range(4):
nx= dx[i]+point[0]
ny= dy[i]+point[1]
if 0<=nx and nx<n and 0<=ny and ny<n and board[nx][ny]=='1':
board[nx][ny]='2'
queue.append((nx,ny))
length +=1
return length
n = int(input())
board = [list(input()) for i in range(n)]
length_list = []
for i in range(n):
for j in range(n):
if board[i][j] == '1': # 1에서 bfs 시작
v = bfs((i, j))
length_list.append(v)
length_list.sort() # 길이 정렬
print(len(length_list))
for i in length_list:
print(i)
|
'프로그래밍' 카테고리의 다른 글
[백준 2583 파이썬] 영역구하기 (0) | 2020.02.24 |
---|---|
[백준 11724 파이썬] 연결 요소의 개수 (0) | 2020.02.24 |
[백준 1260 파이썬] DFS와 BFS (0) | 2020.02.24 |
[백준 1107 파이썬] 리모컨 (0) | 2020.02.24 |
[백준 11659 파이썬] 구간 합 구하기 4 (0) | 2020.02.24 |