다잘하고싶어

백준 1946. 신입사원 (Comparator 를 사용하여 객체배열 오름차순) 본문

알고리즘

백준 1946. 신입사원 (Comparator 를 사용하여 객체배열 오름차순)

챙영잉 2024. 1. 31. 15:10

Person 객체를 생성해서 멤버변수로 서류등수와 면접등수를 선언했다

Comparator 를 이용하여 객체배열을 서류등수 기준으로 오름차순 정렬한 후, 

면접 등수를 비교하여 신입사원으로 채용가능한 숫자를 증가시키는 방향으로 진행했다.

 

이미 서류기준 정렬이 되어 있으므로, 다음인덱스의 서류 등수는 이전 인덱스의 서류 등수보다 낮다
따라서 현재 인덱스의 면접 등수는 그동안의 이전 인덱스들의 면접 등수보다 높아야 한다
for 돌면서 min 값을 갱신하고, 들고가면서 비교해야한다.

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.Arrays;
import java.util.Comparator;
import java.util.StringTokenizer;


public class 신입사원 {
    public static void main(String[] args) throws Exception {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringTokenizer st;
        StringBuilder sb = new StringBuilder();
        int T = Integer.parseInt(br.readLine());
        for (int tc = 0; tc < T; tc++) {
            int cnt = 1;
            int n = Integer.parseInt(br.readLine());
            Person[] persons = new Person[n];
            for (int i = 0; i < n; i++) {
                st = new StringTokenizer(br.readLine());
                int basic = Integer.parseInt(st.nextToken());
                int interview = Integer.parseInt(st.nextToken());
                Person p = new Person(basic, interview);
                persons[i] = p;
            }
            //면접순위별로 정렬
            Arrays.sort(persons, new Comparator<Person>(){
                @Override
                public int compare(Person p1, Person p2){
                    if(p2.paper<p1.paper) return 1;
                    else if(p2.paper==p1.paper) return 0;
                    else return -1;
                }
            });

            int min = persons[0].speech;
            for (int i = 1; i < n; i++) {
                if(persons[i].speech < min){
                    cnt++;
                    min = persons[i].speech;
                }
            }
            sb.append(cnt).append('\n');

        }//TC
        System.out.println(sb);

    }//main
}
class Person{
    int paper;
    int speech;

    public Person(int paper, int speech) {
        this.paper = paper;
        this.speech = speech;
    }
}