문제링크
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[] = {-1,-1,-1,0,1,1,1,0};
static int dy[] = {-1,0,1,1,1,0,-1,-1};
static char map[][];
static int result = 0;
static int N;
public static void main(String[] args) throws NumberFormatException, IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int T = Integer.parseInt(br.readLine());
for(int t=1;t<=T;t++) {
N = Integer.parseInt(br.readLine());
StringTokenizer st;
map = new char[N][N];
result = 0;
for(int i=0;i<N;i++) {
st = new StringTokenizer(br.readLine());
for(int j=0;j<N;j++)
map[i][j] = st.nextToken().charAt(0);
}
/* for(int i=0;i<N;i++)
System.out.println(Arrays.toString(map[i]));*/
int sum = 0;
for(int i=0;i<N;i++) {
for(int j=0;j<N;j++) {
if(map[i][j] == 'W')
sum = find(i,j);
result = Math.max(sum, result);
}
}
System.out.println("#"+t+" "+result);
}
}
static int find(int row,int col) {
int sum = 0;
for(int d=0;d<8;d++) {
int nx = row+dx[d];
int ny = col+dy[d];
if(nx<0 || nx>=N || ny<0 || ny>=N) continue;
if(map[nx][ny] == 'W') sum++;
}
if(sum ==0) sum = 1;
return sum;
}
}
8방향 배열을 선언해준 뒤
8방향을 탐색하면서 W가 있는지 검색하였다. 그리고 W가 있는만큼 깊이를 return 해주었다.
혹시 사방향이 다 땅이면 sum = 1로 해주어서 return 해주었다.
'알고리즘 > SWExpert' 카테고리의 다른 글
[JAVA]SWEA_1238_contact (0) | 2021.03.16 |
---|---|
[JAVA]SWEA_1949_등산로조성 (0) | 2021.03.13 |
[JAVA]SWExpert_1247_최적경로 (0) | 2021.02.18 |
[JAVA]SWExpert_1493_새로운 수의 연산 (0) | 2021.02.17 |
[JAVA]SWExpert_6808_규영이와 인영이의 카드게임 (0) | 2021.02.15 |