[BOJ]2667番号のみ
番号のみ
dfsを利用して問題を解く
上下左右の言い回しに慣れる
に答える
dfsを利用して問題を解く
上下左右の言い回しに慣れる
コード#コード#
n = int(input())
graph = []
for _ in range(n):
graph.append(list(map(int,input())))
grp = []
cnt = 0
dx = [-1,1,0,0] # 상하좌우
dy = [0,0,-1,1]
def dfs(x,y):
global cnt
if x<0 or x>=n or y<0 or y>=n: # 범위
return False
if graph[x][y]==1:
cnt +=1
graph[x][y] = 0
for i in range(4):
dfs(x+dx[i],y+dy[i])
return True
for i in range(n):
for j in range(n):
if dfs(i,j)==True:
grp.append(cnt)
cnt = 0
print(len(grp))
grp.sort()
for i in grp:
print(i)
Reference
この問題について([BOJ]2667番号のみ), 我々は、より多くの情報をここで見つけました https://velog.io/@zioo/BOJ2667단지번호붙이기テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol