파일 업로드

목장의 정삼각형

profile
실행 시간 제한메모리 제한
2 초512 MB
📃 해결할 문제

준호의 목장은 N×NN \times N (1N3001 \le N \le 300) 정사각형 격자로 나타낼 수 있으며, 1i,jN1 \le i,j \le N 각 위치는 (i,j)(i,j)로 표현됩니다. 

격자의 각 정사각형에 대해서, 해당 위치에 소가 있다면 '*'이고 소가 없다면 '.'이 입력되어 있습니다.

준호는 목장의 아름다움이 서로 거리가 같은 세 마리의 소로 이루어진 정삼각형의 개수에 비례한다고 생각합니다.

즉, 이들은 정삼각형을 형성합니다. 유감스럽게도, 모든 소가 정수 좌표에 위치해 있기 때문에 유클리드 거리를 사용한다 해도 아름다운 삼각형이 존재할 수 없다는 것을 준호는 최근에 깨달았습니다! 

따라서 준호는 "맨해튼" 거리를 사용하기로 결정했습니다. 구체적으로, 두 위치 (x0,y0)(x_0,y_0)(x1,y1)(x_1,y_1) 사이의 맨해튼 거리는 x0x1+y0y1|x_0-x_1|+|y_0-y_1|과 같습니다.

소의 위치를 나타내는 격자가 주어졌을 때, 정삼각형을 이루는 소의 삼각형 개수를 계산하세요.

💻 입력

첫 줄에는 하나의 정수 N.N.이 들어있습니다.

1iN,1 \le i \le N,에 대해서, 입력의 i+1i+1번째 줄에는 '*'과 '.'만으로 구성된 길이 NN의 문자열이 포함되어 있습니다. 

jj번째 문자는 위치 (i,j)(i,j)에 소가 있는지 여부를 나타냅니다.

🖨️ 출력

답을 포함한 하나의 정수를 출력합니다. 이는 부호 있는 32비트 정수로 표현할 수 있음이 보장됩니다.


💻 예제 입력 1
3
*..
.*.
*..
🖨️ 예제 출력 1
1

💡 힌트

세 마리의 소가 있고, 그들의 맨해튼 거리가 각각 두 마리의 소 사이에 동일하기 때문에 이들은 정삼각형을 형성합니다.


출처: USACO 2020 February Contest, Platinum Problem 2. Equilateral Triangles