public class boj18869 {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine());
int m = Integer.parseInt(st.nextToken());
int n = Integer.parseInt(st.nextToken());
int[][] origin = new int[m][n];
List<Integer>[] lists = new ArrayList[m];
for (int i = 0; i < m; i++) {
st = new StringTokenizer(br.readLine());
for (int j = 0; j < n; j++) {
origin[i][j] = Integer.parseInt(st.nextToken());
}
lists[i] = Arrays.stream(origin[i]).boxed().collect(Collectors.toList());
Collections.sort(lists[i]);
for (int j = 0; j < n; j++) {
origin[i][j] = Collections.binarySearch(lists[i], origin[i][j]);
}
}
int count = 0;
for (int i = 0; i < m; i++) {
for (int j = i + 1; j < m; j++) {
if(Arrays.equals(origin[i], origin[j]))
count++;
}
}
System.out.println(count);
}
}
- 행성의 정렬과 binarySearch를 사용하기 위해 리스트 사용
- 원본 배열에 행성 크기를 저장한다.
- i번째 우주 배열을 List[i]에 스트림을 사용하여 변환해준다.
- Collections.sort()를 사용하여 정렬한다.
- binarySearch()를 사용하여 i번째 우주 리스트에 원본 행성을 검색하고 값을 원본 행성에 다시 넣어준다.
- 배열의 값들이 서로 같은지 확인 후, 카운트하여 리턴한다.