APS
SEA7234_안전 기지(User Problem)
ChoiSH313
2019. 3. 7. 09:23
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 | import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.Arrays; import java.util.StringTokenizer; public class Solution { static int[] dx = {0,1,0,-1}; static int[] dy = {-1,0,1,0}; static int N; public static void main(String[] args) throws Exception { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); int test_case = Integer.parseInt(br.readLine().trim()); for (int tc = 1; tc <= test_case; tc++) { StringTokenizer st1 = new StringTokenizer(br.readLine().trim(), " "); N = Integer.parseInt(st1.nextToken()); int B = Integer.parseInt(st1.nextToken()); int[][] map = new int[N+1][N+1]; for (int i = 0; i < B; i++) { StringTokenizer st2 = new StringTokenizer(br.readLine().trim(), " "); int x = Integer.parseInt(st2.nextToken()); int y = Integer.parseInt(st2.nextToken()); // 기지의 위치 ++ map[x][y]++; solve(map, x, y); } // 중복된 곳 중에서 최대값 출력 int max = 0; for (int i = 1; i <= N; i++) { for (int j = 1; j <= N; j++) { if(max < map[i][j]) { max = map[i][j]; } } } System.out.println("#" + tc + " " + max); } // end of tc } // end of main // 여기서 바로 인접한 곳 ++ private static void solve(int[][] map, int x, int y) { for (int i = 0; i < 4; i++) { int nx = x + dx[i]; int ny = y + dy[i]; for (int j = 0; j < 2; j++) { // 인접한 곳(두번째까지)++ if(nx>0 && nx<=N && ny>0 && ny<=N) { map[nx][ny]++; } nx += dx[i]; ny += dy[i]; } } } // end of solve } // end of class | cs |