BOJ#1946 신입 사원
* 문제
* 풀이
서류 성적으로 오름차순 정렬 후 면접 성적을 순차적으로 검사한다.
정렬 이후 첫번째 줄은 무조건 합격이므로
2번째 줄부터 N번째 줄까지 순차적으로 진행한다.
서류 성적으로 한번 정렬 되었으므로 이미 누군가에게는 한번 졌다는 뜻이다.
따라서 면접 성적에서 누구에게라도 한번만 더 지게 되면 탈락이다.
따라서,
2번째 줄부터 N번째 줄까지 순차적으로 진행하면서
면접 성적의 최고 순위를 계속 갱신 + 최고 순위와 현재 라인을 검사
* 나의 코드
https://github.com/stack07142/BOJ/tree/master/BOJ%231946_Freshman/src
import java.io.IOException;
import java.util.Scanner;
/**
* BOJ#1946 신입사원
* https://www.acmicpc.net/problem/1946
*/
public class Main {
public static void main(String[] args) throws IOException {
int T; // 테스트 케이스 개수
int N; // 지원자의 숫자 <= 100,000
Grade[] grade; // 서류, 면접 등수
Scanner sc = new Scanner(System.in);
T = sc.nextInt();
for (int t = 0; t < T; t++) {
N = sc.nextInt();
grade = new Grade[N + 1];
for (int i = 0; i < N; i++) {
int a = sc.nextInt();
int b = sc.nextInt();
grade[a] = new Grade(a, b);
}
int ans = 1;
int best = grade[1].b;
for (int i = 2; i <= N; i++) {
if (grade[i].b < best) {
best = best > grade[i].b ? grade[i].b : best;
ans++;
}
}
System.out.println(ans);
}
}
}
class Grade implements Comparable<Grade> {
int a; // 서류 등수
int b; // 면접 등수
Grade(int a, int b) {
this.a = a;
this.b = b;
}
@Override
public int compareTo(Grade o) {
return this.a < o.a ? -1 : 1;
}
@Override
public String toString() {
return "(" + a + "," + b + ")";
}
}
'Algorithm > Greedy' 카테고리의 다른 글
BOJ#1541 잃어버린 괄호 (0) | 2017.04.30 |
---|---|
BOJ#6195 Fence Repair (0) | 2017.02.02 |
BOJ#7676 Saruman's Army (0) | 2017.02.02 |
POJ#3617 Best Cow Line (0) | 2017.02.01 |
BOJ#1700 멀티탭 스케쥴링 (0) | 2017.02.01 |