[BOJ]2667_단지번호붙이기
풀이
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)
Author And Source
이 문제에 관하여([BOJ]2667_단지번호붙이기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@zioo/BOJ2667단지번호붙이기저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)