헝D의 일기장
article thumbnail

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

 

19637번: IF문 좀 대신 써줘

첫 번째 줄에는 칭호의 개수 N (1 ≤ N ≤ 105)과 칭호를 출력해야 하는 캐릭터들의 개수 M (1 ≤ M ≤ 105)이 빈칸을 사이에 두고 주어진다. (1 ≤ N, M ≤ 105) 두 번째 줄부터 N개의 줄에 각 칭

www.acmicpc.net

 

나의풀이

import java.io.*;
import java.util.*;
public class Main {
    public static void main(String args[]) throws Exception{
        BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
        BufferedWriter bw=new BufferedWriter(new OutputStreamWriter(System.out));
        StringTokenizer st= new StringTokenizer(br.readLine());

        int n= Integer.parseInt(st.nextToken());
        int m= Integer.parseInt(st.nextToken());
        String[] slist= new String[n];
        int[] ilist = new int[n];
        
        for(int i=0;i<n;i++){
            st= new StringTokenizer(br.readLine());
            slist[i]=st.nextToken();
            ilist[i]=Integer.parseInt(st.nextToken());
        }
        
        for(int i=0; i<m; i++){
            st= new StringTokenizer(br.readLine());
            int temp = Integer.parseInt(st.nextToken());
            
            //이진탐색
            int start=0;
            int end= n-1;
            int mid=0;
            
            while(start<=end){
                mid=(start+end)/2;
                if(ilist[mid] < temp){
                    start=mid+1;
                }else{
                    end=mid-1;
                }
            }
            bw.write(slist[end+1]+"\n");

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

헝D의 일기장

@헝D

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!