[백준] 1946 (실버1)

AI·2025년 9월 4일

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

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.Arrays;
import java.util.StringTokenizer;

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));

        int T = Integer.parseInt(br.readLine());
        for(int i=0;i<T;i++){
            int N = Integer.parseInt(br.readLine());
            int[][] people = new int[N][2];
            int count = 1; // 1등인 애는 무조건 뽑히기에

            for(int j=0;j<N;j++){
                StringTokenizer st = new StringTokenizer(br.readLine());
                int paper = Integer.parseInt(st.nextToken());
                int interview = Integer.parseInt(st.nextToken());
                people[j][0] = paper;
                people[j][1] = interview;
            }

            //sorting
            Arrays.sort(people, (a, b) -> Integer.compare(a[0], b[0]));

            // 판단
            for(int j=N-1;j>0;j--){
                if(people[j][1] - people[j-1][1] < 0) count++;
            }
            bw.write(String.valueOf(count));
            bw.flush();
        }

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

=> 반대 방향으로 검사 + 값 갱신

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.Arrays;
import java.util.StringTokenizer;

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));

        int T = Integer.parseInt(br.readLine());
        for(int i=0;i<T;i++){
            int N = Integer.parseInt(br.readLine());
            int[][] people = new int[N][2];
            int count = 1; // 1등인 애는 무조건 뽑히기에

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

            //sorting
            Arrays.sort(people, (a, b) -> Integer.compare(a[0], b[0]));

            // 판단
            int max = people[0][1];
            for(int j=1;j<N;j++) {
                if (people[j][1] < max) {
                    count++;
                    max = people[j][1];
                }
            }
            bw.write(String.valueOf(count));
            bw.newLine();

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

0개의 댓글