코딩테스트
[백준] 1388 바닥 장식 - 파이썬
_maddy
2023. 7. 27. 21:32
1388번: 바닥 장식
형택이는 건축가이다. 지금 막 형택이는 형택이의 남자 친구 기훈이의 집을 막 완성시켰다. 형택이는 기훈이 방의 바닥 장식을 디자인했고, 이제 몇 개의 나무 판자가 필요한지 궁금해졌다. 나
www.acmicpc.net
이번에도 그래프 문제,
저번에 풀었던 유기농 배추하고 매우 비슷한데, 오히려 더 쉬워서 빨리 풀었다.
6 9
-||--||--
--||--||-
|--||--||
||--||--|
-||--||--
--||--||-
세로, 가로 길이를 입력하고 바닥에 타일을 설치하는 건데
- 모양이 연속으로 있으면 하나의 타일로 생각하고, | 모양이 연속으로 있으면 하나의 타일로 생각한다.
그래서 이 문제는 - 이 모양은 좌우만 확인하고, | 모양은 상하만 확인하면 되어서 더 쉽다.
N,M=map(int,input().split()) #세로, 가로
floor=[] #바닥 그래프
count=0
def dfs(x,y):
xy=[-1,1]
#좌우로만 확인하면 됨
if floor[x][y]=='-':
#확인했다는 표시
floor[x][y]=0
for i in xy:
dy=y+i
if (0<=dy<M) and floor[x][dy]=='-':
dfs(x,dy)
#상하로만 확인하면 됨.
if floor[x][y]=='|':
floor[x][y]=0
for j in xy:
dx=x+j
if (0<=dx<N) and floor[dx][y]=='|':
dfs(dx,y)
#타일 입력
for _ in range(N):
floor.append(list(input()))
#타일 개수 확인
for i in range(N):
for j in range(M):
if floor[i][j]=='-' or floor[i][j]=='|':
dfs(i,j)
count+=1
print(count)