여러 메서드로 분리하는 방법 + Vector + Colletions.sort()를 사용해 봤다.
자료구조를 만드는 과정에서 class를 사용해보려 했는데 더 연습해 보겠다.
import java.util.Collection;
import java.util.Collections;
import java.util.Scanner;
import java.util.Vector;
public class bj1895 {
// Scanner를 전역 변수로 선언
static Scanner scanner = new Scanner(System.in);
public static Vector<Vector<Integer>> inputImage()
{
Vector<Vector<Integer>> image = new Vector<>();
int R, C, i, j, V;
R = scanner.nextInt();
C = scanner.nextInt();
for(i = 0; i < R; i++)
{
Vector<Integer> row = new Vector<>();
for(j = 0; j < C; j++)
{
V = scanner.nextInt();
row.add(V);
}
image.add(row);
}
// System.out.println();
// for(i = 0; i < R; i++)
// {
// for(j = 0; j < C; j++)
// {
// System.out.print(image.get(i).get(j) + " ");
// }
// System.out.println();
// }
return image;
}
public static void findAnwser(Vector<Vector<Integer>> image)
{
int i, j, n, m;
int R = image.size();
int C = image.get(0).size();
int count = 0;
int T = scanner.nextInt();
//System.out.println("R : " + R + " / C : " + C);
for(i = 0; i < R - 2; i++)
{
for(j = 0; j < C - 2; j++)
{
Vector<Integer> filter = new Vector<>();
for(n = i; n < i + 3; n++)
{
for(m = j; m < j + 3; m++)
{
filter.add(image.get(n).get(m));
}
}
Collections.sort(filter);
//System.out.println("filter : " + filter);
//System.out.println("filter.get(4) : " + filter.get(4));
if(filter.get(4) >= T)
{
count++;
}
}
}
System.out.println(count);
}
public static void main(String[] args) {
Vector<Vector<Integer>> image = new Vector<>();
int T;
image = inputImage();
findAnwser(image);
scanner.close();
}
}