IF문 좀 대신 써줘 19637

LJM·2023년 2월 4일
0

백준풀기

목록 보기
72/259

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

시간복잡도 M log(N)

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

class Nickname
{
    String name;
    int power;

    public Nickname(String name, int power) {
        this.name = name;
        this.power = power;
    }
}

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

        String[] input = br.readLine().split(" ");
        int N = Integer.parseInt(input[0]);
        int M = Integer.parseInt(input[1]);

        Nickname[] arrName = new Nickname[N];

        for(int i = 0; i < N; ++i)
        {
            input = br.readLine().split(" ");
            arrName[i] = new Nickname(input[0], Integer.parseInt(input[1]));
        }

        int left = 0;
        int right = arrName.length;
        int cand= 0;
        StringBuilder sb = new StringBuilder();

        int temp = 0;
        for(int i = 0; i < M; ++i)
        {
            temp = Integer.parseInt(br.readLine());
            left = 0;
            right = arrName.length;

            while(left <= right)
            {
                cand = (left + right)/2;

                if(temp <= arrName[cand].power)//
                {
                    right = cand-1;
                }
                else
                {
                    left = cand+1;
                }
            }

            sb.append(arrName[left].name + "\n");
        }

        System.out.println(sb);

    }
}
profile
게임개발자 백엔드개발자

0개의 댓글