白駿/区番/2667
Question
質問リンク
Silver 1
Logic
デフォルト構造:bfs
1.上下左右を探索するためにdx,dyを宣言する.
2.デフォルトで1と表示されている初期グラフィックを参照し、1に遭遇した場合はbfsを実行します.
3.グラフの範囲内で、1に続く次の1を検索し、数を数えます.
4.このプロセスが完了したら、各団地の家屋数を昇順に出力します.
Code
質問リンク
Silver 1
Logic
デフォルト構造:bfs
1.上下左右を探索するためにdx,dyを宣言する.
2.デフォルトで1と表示されている初期グラフィックを参照し、1に遭遇した場合はbfsを実行します.
3.グラフの範囲内で、1に続く次の1を検索し、数を数えます.
4.このプロセスが完了したら、各団地の家屋数を昇順に出力します.
Code
from collections import deque
dx = [-1,0,0,1]
dy = [0,1,-1,0]
def bfs(a,b):
global li
n=len(li)
queue = deque()
queue.append([a,b])
li[a][b] = 0
count=1
while queue:
x,y = queue.popleft()
for i in range(4):
xx = x+dx[i]
yy = y+dy[i]
if xx < 0 or xx >= n or yy < 0 or yy >= n: continue
if li[xx][yy] == 1:
li[xx][yy]=0
queue.append([xx,yy])
count+=1
return count
li=[]
N=int(input())
for _ in range(N):
li.append(list([int(i) for i in [*input()]]))
cnt=[]
for i in range(N):
for j in range(N):
if li[i][j]==1:
cnt.append(bfs(i,j))
cnt.sort()
print(len(cnt))
for _ in range(len(cnt)): print(cnt[_])
Reference
この問題について(白駿/区番/2667), 我々は、より多くの情報をここで見つけました https://velog.io/@swany0509/백준-단지번호붙이기-2667テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol