N * M 크기의 얼음틀이 있다. 
구멍이 뚫려있는 부분은 0, 칸막이가 존재하는 부분은 1로 표시. 

구멍이 뚫려있는 부분끼리 상,하,좌,우 로 붙어있는 경우 서로 연결되어있는것으로 간주

얼음틀의 모양이 주어졌을 때 생성되는 총 아이스크림의 개수를 구하는 프로그램 작성하기 

ex )

위와 같은 얼음틀에서는 아이스크림 3개가 생성된다고 보면 된다. 

풀이 : 

DFS를 이용하면서, 방문하는 순간 1로 바꾸는 것으로 한다. 

# 음료수 얼려먹기
# N X M 크기의 얼음틀, 구명이 뚫려있는부분은 0, 칸막이가 존재하는 부분은 1로 표시
# 한번에 만들 수 있는 아이스크림의 개수를 출력
ices=[
    [0,0,1,1,0],
    [0,0,0,1,1],
    [1,1,1,1,1],
    [0,0,0,0,0]
]

n=len(ices)
m=len(ices[0])

def dfs(x,y):
    if x<=-1 or x>=n or y<=-1 or y>= m:
        return False
    if ices[x][y]==0:
        ices[x][y]=1
        dfs(x-1,y)
        dfs(x,y-1)
        dfs(x+1,y)
        dfs(x,y+1)
        return True
    return False
ans=0
for i in range(n):
    for j in range(m):
        if dfs(i,j)==True: ans+=1
ans

'CODING TEST' 카테고리의 다른 글

이코테 _ 떡볶이떡  (0) 2021.06.18
파이썬 Python KAKAO_2019 인턴- 불량사용자  (0) 2021.06.18
파이썬 Python KAKAO_2018 캐시  (0) 2021.06.16
파이썬 Python KAKAO_2018 파일명 정렬  (0) 2021.06.15
Greedy  (0) 2021.05.31

+ Recent posts