[BOJ 2667]番号のみ(Python)
質問する
https://www.acmicpc.net/problem/2667
問題は、接続された家屋の団地数を出力し、昇順に各団地に属する家屋数を出力することである.
問題はよく読めず、以前の問題と同じように挿入しました.⛏
問題を解く
同様に,(nx,ny)を非家(0)にする.
このときcntは各団地に属する家数である.
コード#コード#
N = int(input())
li = [list(input().rstrip()) for _ in range(N)]
ans = []
dx = [1,-1,0,0]
dy = [0,0,-1,1]
for i in range(N):
for j in range(N):
if li[i][j] == "1":
cnt = 1
li[i][j] = "0"
q = [(i,j)]
while q:
x,y = q.pop(0)
for k in range(4):
nx = x + dx[k]
ny = y + dy[k]
if 0 <= nx < N and 0 <= ny < N:
if li[nx][ny] == "1":
q.append((nx,ny))
li[nx][ny] = "0"
cnt += 1
ans.append(cnt)
ans.sort()
print(len(ans))
for i in ans:
print(i)
Reference
この問題について([BOJ 2667]番号のみ(Python)), 我々は、より多くの情報をここで見つけました https://velog.io/@uoayop/BOJ-2667-단지-번호-붙이기Pythonテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol