# 쿠키의 신체 측정 import sys input = sys.stdin.readline def find_heart(grid, n, k): for i in range(n): if grid[k][i] == "*": return [k+1, i] else: return [-1, -1] def down_check_star(grid, n, x, y): length = 0 while x <= n-1: if grid[x][y] != "*": break length += 1 x += 1 return length def row_check_star(grid, n, x, y, dir): # 오른쪽 +1, 왼쪽 -1 length = 0 while y <= n-1 and y >= 0: if grid[x][y] != "*": break length += 1 y += dir return length def solution(): n = int(input().rstrip()) grid = [] heart = [-1, -1] left_arm = 0 right_arm = 0 mid = 0 left_leg = 0 right_leg = 0 for i in range(n): grid.append(input().rstrip()) if heart[0] == -1: heart = find_heart(grid, n, i) left_arm = row_check_star(grid, n, heart[0], heart[1]-1, -1) right_arm = row_check_star(grid, n, heart[0], heart[1]+1, +1) mid = down_check_star(grid, n, heart[0]+1, heart[1]) left_leg = down_check_star(grid, n, heart[0]+mid+1, heart[1]-1) right_leg = down_check_star(grid, n, heart[0]+mid+1, heart[1]+1) heart[0] += 1 heart[1] += 1 print(*heart) print(left_arm, right_arm, mid, left_leg, right_leg) return solution() """ 걸린 시간: 30분 시간 복잡도: 팔, 다리, 허리는 일자로 있기 때문에 O(n)이지만, 머리는 (0,0) 부터 쭉 찾아서 처음 나오는 *이므로 O(n^2)이다. 따라서 전체 시간 복잡도는 O(n^2)이다. 해설: (0,0)에서 선형으로 찾다가 가장 먼저 나오는 *이 머리이다. 이 머리 바로 한 칸 밑이 심장이다. 심장에서 팔, 다리, 허리를 구하면 되는데, 연속된 *을 찾는 것이다. 이는 행으로 연속된 별 찾기와 열로 연속된 별 찾기 함수 2개를 만들어서 진행하면 된다. 위로 올라갈 일은 없어서 열은 그냥 down으로 했고, 행은 row로 방향을 인자로 받아서 체크했다. """