n = int(input())
room = [list(input()) for _ in range(n)]
w, h = 0, 0 # 가로/세로로 누울 수 있는 자리
for i in range(n):
temp_w = '' # 빈칸이 연속해있는지 확인하기 위한 임시 변수
temp_h = ''
for j in range(n):
# 가로
if room[i][j] == '.': # 빈칸일경우 임시변수에 추가
temp_w += '.'
else: # 빈칸이 아닐경우(X)
if len(temp_w) >= 2: # 2칸 이상인지 체크
w += 1
temp_w = '' # 임시 변수 비우기
# 세로
if room[j][i] == '.':
temp_h += '.'
else:
if len(temp_h) >= 2:
h += 1
temp_h = ''
# 모두 빈칸일 경우, 또는 .으로 끝날 경우를 대비해 한번 더 체크
if len(temp_w) >= 2:
w += 1
if len(temp_h) >= 2:
h += 1
print(w, h)
빈칸이 연속으로 2칸 이상인지 확인하고 값을 추가해준다. 이중 for 문을 이용해 가로와 세로를 한번에 구했다.
https://www.acmicpc.net/problem/1652
'study > Algorithm' 카테고리의 다른 글
[백준] 파이썬 1244 : 스위치 켜고 끄기 (0) | 2024.04.02 |
---|---|
[백준] 파이썬 16926번: 배열 돌리기 1 (0) | 2024.04.01 |
[백준] 파이썬 1018번: 체스판 다시 칠하기 (0) | 2024.04.01 |
[백준] 파이썬 2556번: 최댓값 (0) | 2024.04.01 |
[백준] 파이썬 2738 : 행렬 덧셈 (0) | 2024.04.01 |