Algorithm/문제 풀이 / / 2023. 6. 17. 01:29

[BAEKJOON_19637 - JAVA] IF문 좀 대신 써줘

반응형

문제

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

 

19637번: IF문 좀 대신 써줘

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

www.acmicpc.net

 

JAVA코드

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.ArrayList;
import java.util.List;
import java.util.StringTokenizer;

public class Main {

    private static int N, M;

    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
        StringTokenizer st = new StringTokenizer(br.readLine());
        StringBuilder sb = new StringBuilder();

        N = Integer.parseInt(st.nextToken());
        M = Integer.parseInt(st.nextToken());

        List<Info> infoList = new ArrayList<>();
        for (int idx = 0; idx < N; idx++) {
            st = new StringTokenizer(br.readLine());
            infoList.add(new Info(st.nextToken(), Integer.parseInt(st.nextToken())));
        }

        int val = 0;
        int left, mid, right;
        for (int idx = 0; idx < M; idx++) {
            val = Integer.parseInt(br.readLine());
            left = 0;
            right = N - 1;
            mid = right;
            while (right - left > 1) {
                mid = (right + left) / 2;
                if (infoList.get(mid).getVal() >= val)
                    right = mid;
                else
                    left = mid;
            }
            if (infoList.get(left).getVal() >= val)
                sb.append(infoList.get(left).getStr() + "\n");
            else
                sb.append(infoList.get(right).getStr() + "\n");

        }

        bw.write(sb.toString());
        br.close();
        bw.close();

    }

    public static class Info {
        private String str;
        private int val;

        public Info(String str, int val) {
            this.str = str;
            this.val = val;
        }

        public int getVal() {
            return val;
        }

        public String getStr() {
            return str;
        }

    }
}
반응형
  • 네이버 블로그 공유
  • 네이버 밴드 공유
  • 페이스북 공유
  • 카카오스토리 공유