경보 하나는 자신이 있는 칸과 상하좌우로 한 칸 떨어진 칸에 닿아요. 격자 밖은 제외해요. 모든 경보를 보낸 뒤 경보가 정확히 한 번 닿은 칸의 수를 구해요. 같은 위치에 경보가 두 개 있으면 각각 따로 보내요.
int solution(int rows, int cols, vector<vector<int>> alarms)가 요구한 값을 반환하도록 잘못된 한 줄만 수정해 주세요.
매개변수와 반환값
rows와 cols는 각각 110이에요. alarms의 행 수는 050, 각 행은 [행 번호, 열 번호]예요. 행 번호는 0rows-1, 열 번호는 0cols-1이에요. 반환값은 0~rows×cols인 정수예요.
예시
rows=3, cols=3, alarms={{0, 0}, {2, 2}}이면6를 반환해요. 두 모서리 경보가 닿는 세 칸씩은 겹치지 않아 여섯 칸이에요.rows=3, cols=3, alarms={{1, 0}, {1, 2}}이면6를 반환해요. 두 경보의 중앙 겹침 칸을 제외한 여섯 칸에 정확히 한 번 닿아요.
실행용 입출력
첫 줄에 rows cols 경보 수 n, 다음 n줄에 경보의 행 번호와 열 번호를 입력해요. main은 입력을 매개변수로 바꾸고 반환값을 출력하는 채점 하네스예요. 풀이 대상은 solution의 한 줄이에요.
예시 입력
3 3 2 0 0 2 2
예상 결과
6
예시 입력
3 3 2 1 0 1 2
예상 결과
6
핵심 개념
array-2d: 행과 열의 위치를 구분해요.counting-aggregation: 항목별 횟수와 최종 집계를 구분해요.stl-vector: 벡터의 크기와 인덱스로 매개변수를 읽어요.