99클럽 코테 스터디 3일차 TIL 선분 위의 점

수삼·2025년 1월 15일
0

코딩테스트

목록 보기
42/44

선분 위의 점

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;
import java.util.HashMap;
import java.util.StringTokenizer;
import java.util.TreeSet;

public class Main {
    public static void main(String[] args) throws IOException {


        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringTokenizer st = new StringTokenizer(br.readLine());
        int n = Integer.parseInt(st.nextToken());
        int m = Integer.parseInt(st.nextToken());
        int[] arr = new int[n];
        st = new StringTokenizer(br.readLine());
        for (int i = 0; i < n; i++) {
            arr[i] = Integer.parseInt(st.nextToken());
        }
        Arrays.sort(arr);

        TreeSet<Integer> ts = new TreeSet<>();
        HashMap<Integer, Integer> hs = new HashMap<>();
        int cnt = 0;
        for (int i = 0; i < n; i++) {
            hs.put(arr[i], ++cnt);
            ts.add(arr[i]);
        }

        StringBuilder sb = new StringBuilder();
        while (m-->0) {
            st = new StringTokenizer(br.readLine());
            Integer a = Integer.parseInt(st.nextToken());
            Integer b = Integer.parseInt(st.nextToken());
            a = ts.lower(a);
            b = ts.floor(b);
            a = a==null? 0 : hs.get(a);
            b = b==null? 0 : hs.get(b);
            sb.append(b-a).append('\n');
        }
        System.out.print(sb);

    }


}

이번에도 이진탐색 문제다

0개의 댓글