DevKim

[Python] 백준 #2667 단지번호붙이기 본문

알고리즘 PS

[Python] 백준 #2667 단지번호붙이기

on_doing 2020. 12. 19. 20:42
728x90

www.acmicpc.net/problem/2667

 

2667번: 단지번호붙이기

<그림 1>과 같이 정사각형 모양의 지도가 있다. 1은 집이 있는 곳을, 0은 집이 없는 곳을 나타낸다. 철수는 이 지도를 가지고 연결된 집의 모임인 단지를 정의하고, 단지에 번호를 붙이려 한다. 여

www.acmicpc.net

dfs로 해결

점점 감을 잡고있다.!

 

def dfs(x,y):
    global cnt
    if x<0 or y<0 or x>=n or y>=n:
        return False
    
    if l_list[x][y]==1:
        l_list[x][y]=0
        cnt+=1
        
        dfs(x-1,y) #상
        
        dfs(x+1,y) #하
        
        dfs(x,y-1) #좌
        
        dfs(x,y+1) #우
        
        return (int(1),cnt)
    
n=int(input())
l_list=[]
result=[] # 단지내 집의 수
ptr=0
cnt=0

for i in range(n):
    l_list.append(list(map(int,input())))
    
for i in range(n):
    for j in range(n):        
        a=dfs(i,j)        
        if(a!=None):    
            ptr+=1            
            result.append(a[1])
            cnt=0
print(ptr)
result=sorted(result)
for i in result:
    print(i)       
728x90

'알고리즘 PS' 카테고리의 다른 글

[Python] 백준 #1012 유기농 배추  (0) 2020.12.19
[Python] 백준 #2606 바이러스  (0) 2020.12.19
[Python] 백준 #7576 토마토  (0) 2020.12.19
[Python] 백준 #2178 미로탐색  (0) 2020.12.19
[Python] 백준 #1260 DFS와 BFS  (0) 2020.12.19
Comments