본문 바로가기
코딩테스트 파이썬/탐색

1388 바닥장식 (재시도 0)

by 백엔드 개발자 2021. 7. 30.

문제

형택이는 건축가이다. 지금 막 형택이는 형택이의 남자 친구 기훈이의 집을 막 완성시켰다. 형택이는 기훈이 방의 바닥 장식을 디자인했고, 이제 몇 개의 나무 판자가 필요한지 궁금해졌다. 나무 판자는 크기 1의 너비를 가졌고, 양수의 길이를 가지고 있다. 기훈이 방은 직사각형 모양이고, 방 안에는 벽과 평행한 모양의 정사각형으로 나누어져 있다.

이제 ‘-’와 ‘|’로 이루어진 바닥 장식 모양이 주어진다. 만약 두 개의 ‘-’가 인접해 있고, 같은 행에 있다면, 두 개는 같은 나무 판자이고, 두 개의 ‘|’가 인접해 있고, 같은 열에 있다면, 두 개는 같은 나무 판자이다.

기훈이의 방 바닥을 장식하는데 필요한 나무 판자의 개수를 출력하는 프로그램을 작성하시오.

입력

첫째 줄에 방 바닥의 세로 크기N과 가로 크기 M이 주어진다. 둘째 줄부터 N개의 줄에 M개의 문자가 주어진다. 이것은 바닥 장식 모양이고, '-‘와 ’|‘로만 이루어져 있다. N과 M의 제한은 100이다.

출력

첫째 줄에 문제의 정답을 출력한다.

 

그래프 문제를 연습하려고 했는데, 구현으로 대부분 풀어서 이문제로는 연습을 하지는 못했다.

 

풀이 흐름은

행과 열을 따로 계산하는건데,

열을 먼저 검사하면 중간에 ' | '가 있으면 다음열로 넘어가고, '-'가 나오면 카운트를 하나 증가시키고 -가 이어질 때까지

계속 넘어간다.

행도 마찬가지로 중간에 '-'가 있으면 넘어가고, '|'가 있으면 카운트 증가 후 계속 넘긴다.

 

#n,m입력
n,m=map(int,input().split())
#나무판자 문자열 배열입력
wood=[ input() for _ in range(n)  ]
#판자 셋는지 여부, 판자개수
cnt=0

for i in range(n):
    j=
0
   
while j<m:
       
if wood[i][j]=='|':
            j+=
1
       
else:
            cnt+=
1
           
while j<m and wood[i][j]=='-':
                j+=
1

for j in range(m):
    i=
0
   
while i<n:
       
if wood[i][j]=='-':
            i+=
1
       
else:
            cnt+=
1
           
while i<n and wood[i][j]=='|':
                i+=
1

print(cnt)

 

 

'코딩테스트 파이썬 > 탐색' 카테고리의 다른 글

16956 늑대와 양  (0) 2021.08.03
16173 점프왕 쩰리 파이썬(재시도 -0)  (0) 2021.08.02
최단경로 - 다익스트라  (0) 2021.07.28
BFS  (0) 2021.07.28
DFS 깊이 우선 탐색 파이썬  (0) 2021.07.27