[java] 1946번 신입사원

ideal dev·2023년 1월 10일
0

코딩테스트

목록 보기
50/69

1. 문제 링크 및 문제

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

2. 해결 방법 생각해보자 ...

순위가 낮을수록, 즉 오름차순으로 정렬해야 원하는 결과값을 얻을 수 있음.
(1등,2등,3등 .. )
1. 서류순위를 기준으로 오름차순 정렬한 뒤,
2. 서류 2등부터 면접 순위만으로 판단
(서류 1등은 무조건 합격이므로 )

Score 클래스에 구현되는 Comparable 이 뭐더라 싶다면?
https://velog.io/@mong7399/자바-JAVA-Comparable-vs-Comparator

3. 코드

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

class Score implements Comparable<Score>{
    int x;
    int y;

    Score(int x, int y){
        this.x = x;
        this.y = y;
    }

    @Override
    public int compareTo(Score o) {
        if (o.x < this.x) return 1;
        else return -1;
    }
}

public class Main {

    static int N;
    static ArrayList<Score> arr;
    static int result;

	public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        int test_case = Integer.parseInt(br.readLine());

        for(int T=0;T<test_case;T++){
            N = Integer.parseInt(br.readLine());
            arr = new ArrayList<>();

            for(int i=0;i<N;i++){
                StringTokenizer st = new StringTokenizer(br.readLine());
                int x = Integer.parseInt(st.nextToken());
                int y = Integer.parseInt(st.nextToken());
                arr.add(new Score(x,y));
            }

            Collections.sort(arr); //서류순 정렬

            int result = 1;
            int minInterview = arr.get(0).y;
            for(int i=1;i<N;i++){
                if(arr.get(i).y < minInterview){
                    result += 1;
                    minInterview = arr.get(i).y;
                }
            }
            System.out.println(result);
        }
	}
}

0개의 댓글