체스판 안전한 칸

면접 대비

시간 제한2초메모리 제한128 MB

요약
체스판에 놓인 퀸, 나이트, 폰의 위치가 주어질 때 퀸이나 나이트에게 공격받지 않는 안전한 칸의 개수를 구합니다.
난이도

보통10점 중 5점

유형
시뮬레이션, 구현, 행렬
정답자
아직 제출이 없습니다

문제

n x m 크기의 체스판에 상대편 Queen, Knight, Pawn이 놓여 있다. 자신의 말을 놓아도 상대편 말에게 잡히지 않는 빈 칸을 안전한 칸이라고 한다. 안전한 칸의 개수를 구하라.

Queen은 가로, 세로, 대각선의 8방향으로 다른 말이 있는 칸 직전까지 공격할 수 있다. 중간에 말이 있으면 그 뒤쪽 칸은 공격하지 못한다.

Knight는 2 x 3 직사각형의 반대쪽 꼭짓점에 해당하는 8칸을 공격할 수 있다. Knight의 공격은 중간에 말이 있어도 막히지 않는다.

Pawn은 다른 말을 공격하지 않으며, Queen의 이동을 막는 장애물 역할만 한다.

입력

첫째 줄에 체스판의 행 수 n과 열 수 m이 주어진다. (1 <= n, m <= 1000)

둘째 줄에는 Queen의 개수 k와 이어서 k개의 위치 r_i c_i가 주어진다. 셋째 줄에는 Knight의 개수와 위치가 같은 형식으로 주어지고, 넷째 줄에는 Pawn의 개수와 위치가 같은 형식으로 주어진다.

각 위치에서 r_i는 행, c_i는 열을 뜻한다. 한 칸에는 말이 하나만 놓인다. Queen, Knight, Pawn의 개수는 각각 100 이하의 음이 아닌 정수이다.

출력

안전한 칸의 개수를 출력한다.

예제2

  1. 예제 1

    입력
    4 4
    2 1 4 2 4
    1 1 2
    1 2 3
    
    예상 출력
    6
    
  2. 예제 2

    입력
    2 3
    1 1 2
    1 1 1
    0
    
    예상 출력
    0