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 |