백준 18869 멀티버스 2

김준영·2023년 5월 9일
1

코딩테스트

목록 보기
19/22

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번째 우주 리스트에 원본 행성을 검색하고 값을 원본 행성에 다시 넣어준다.
  • 배열의 값들이 서로 같은지 확인 후, 카운트하여 리턴한다.
profile
ㅎㅎ

0개의 댓글