테스트 케이스 2번 째 안되는 이유
'#'이 4개 있지만 서로 떨어져 있으므로 하나의 정사각형을 이루는 조건을 만족하지 않음
'#'의 개수를 구한다. 그리고 처음 '#'이 나온 위치를 저장한다.
charp_cnt = '#'총 개수, pos_row, pos_col = '#'이 처음 나온 위치
pos_row, pos_col에서 가로 길이를 구한다.
side= "처음 위치에서 시작된 정사각형 가로 길이" total = "#의 개수"
pos_row, pos_col에서 세로 길이를 구한다.
side_row는 세로 길이인데 가로 길이보다 크면 끝낸다. 그리고 "#"의 개수가 가로 길이와 맞지 않아도 끝낸다.
정답구하기
정사각형안에서 "#"과 전체 "#"과 비교한다. 또한 정사각형 조건(flg)값을 만족하는지 비교한다.
for test_case in range(1, T + 1):
n = int(input())
graph = []
for _ in range(n):
graph.append(list(input()))
charp_cnt, pos_row, pos_col = 0, 0, 0
for row in range(n):
for col in range(n):
if graph[row][col] == "#":
charp_cnt += 1
if charp_cnt == 1:
pos_row = row
pos_col = col
side = 0
total = 0
for i in range(pos_col, n):
if graph[pos_row][i] == "#":
side += 1
total += 1
else:
break
flg, side_row = False, 1
for j in range(pos_row + 1, n):
cnt = 0
side_row += 1
if side_row> side:
break
for i in range(pos_col, n):
if graph[j][i] == "#":
cnt += 1
total += 1
else:
break
if cnt != side:
flg = True
break
if total == charp_cnt and not flg:
print("#" + str(test_case) + " " + "yes")
else:
print("#" + str(test_case) + " " + "no")