Koala - 15기/코딩테스트 준비 스터디

[백준/Java]-먹을 것인가 먹힐 것인가

msms0324 2024. 7. 21. 22:35

https://www.acmicpc.net/problem/7795

import java.io.*;
import java.util.*;

public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));

        int T = Integer.parseInt(br.readLine());

        for (int t = 0; t < T; t++) {
            StringTokenizer st = new StringTokenizer(br.readLine());
            int N = Integer.parseInt(st.nextToken());
            int M = Integer.parseInt(st.nextToken());

            int[] A = new int[N];
            int[] B = new int[M];

            st = new StringTokenizer(br.readLine());
            for (int i = 0; i < N; i++) {
                A[i] = Integer.parseInt(st.nextToken());
            }

            st = new StringTokenizer(br.readLine());
            for (int i = 0; i < M; i++) {
                B[i] = Integer.parseInt(st.nextToken());
            }

            Arrays.sort(A);
            Arrays.sort(B);

            int count = 0;


            for (int i = 0; i < N; i++) {
                int idxB = 0; // 각 테스트 케이스마다 초기화
                while (idxB < M && B[idxB] < A[i]) {
                    idxB++;
                    
                }
                count += idxB;

            }

            bw.write(count + "\n");
        }

        br.close();
        bw.flush();
        bw.close();
    }
}

 


A와 B를 정렬하고 조건에 맞는 (A보다 B가 큰 쌍을) 횟수를 브루트포스로 찾아냈다. N과M이 각각 20000이 최대여서 탐색해야하는 갯수가 그리 크지않아서 가능했다.