내가 개발해볼게!!
[BOJ] 1946번: 신입 사원 (Java) 본문
https://www.acmicpc.net/problem/1946
문제
입력
첫째 줄에는 테스트 케이스의 개수 T(1 ≤ T ≤ 20)가 주어진다. 각 테스트 케이스의 첫째 줄에 지원자의 숫자 N(1 ≤ N ≤ 100,000)이 주어진다. 둘째 줄부터 N개 줄에는 각각의 지원자의 서류심사 성적, 면접 성적의 순위가 공백을 사이에 두고 한 줄에 주어진다. 두 성적 순위는 모두 1위부터 N위까지 동석차 없이 결정된다고 가정한다.
출력
각 테스트 케이스에 대해서 진영 주식회사가 선발할 수 있는 신입사원의 최대 인원수를 한 줄에 하나씩 출력한다.
난이도
실버 1
Sol
public class B1946_신입사원 {
public static int T;
public static void main(String[] args) throws IOException {
Scanner sc = new Scanner(System.in);
BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
T = Integer.parseInt(bf.readLine());
for(int i=0; i<T; i++){
int N = Integer.parseInt(bf.readLine());
rank[] arr = new rank[N];
for(int j=0; j<N; j++){
StringTokenizer token = new StringTokenizer(bf.readLine());
int s = Integer.parseInt(token.nextToken());
int m = Integer.parseInt(token.nextToken());
arr[j] = new rank(s, m);
}
Arrays.sort(arr);
// s 기준 오름차순 정렬
// 이후 m만 비교해 판단
int count = 1; // 정렬 후 첫 번째 원소 포함
int max_score = arr[0].m;
for(int j=1; j<N; j++){
if(max_score>arr[j].m){
count++;
max_score = arr[j].m;
}
}
System.out.println(count);
}
}
public static class rank implements Comparable<rank>{
int s; // 서류심사 성적
int m; // 면접 성적 순위
public rank(int s, int m){
this.s = s;
this.m = m;
}
@Override
public int compareTo(rank o) {
if(this.s > o.s){
return 1;
}
else {
return -1;
}
}
}
}
'Algorithm > BOJ' 카테고리의 다른 글
[BOJ] 2688번: 줄어들지 않아 (0) | 2023.07.19 |
---|---|
[BOJ] 9934번: 완전 이진 트리 (1) | 2023.07.13 |
[BOJ] 1052번: 물병 (Java) (0) | 2023.07.07 |
[BOJ] 1743번: 음식물 피하기 (Java) (0) | 2023.07.04 |
[BOJ] 1377번: 버블 소트 (0) | 2023.06.16 |