본문 바로가기
알고리즘/백준

[Java] BOJ 1946번 신입 사원

by 컴공맨 2021. 6. 14.
 

1946번: 신입 사원

첫째 줄에는 테스트 케이스의 개수 T(1 ≤ T ≤ 20)가 주어진다. 각 테스트 케이스의 첫째 줄에 지원자의 숫자 N(1 ≤ N ≤ 100,000)이 주어진다. 둘째 줄부터 N개 줄에는 각각의 지원자의 서류심사 성

www.acmicpc.net


풀이

정렬을 해결했습니다.


코드

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

public class Main {
	public static int T, N;
	public static int[][] newcomers;
	public static void main(String[] args) throws IOException {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		StringTokenizer st;
		
		T = Integer.parseInt(br.readLine());
		for (int tc = 0; tc < T; ++tc) {
			N = Integer.parseInt(br.readLine());
			
			newcomers = new int[N][2];
			
			for (int i = 0; i < N; ++i) {
				st = new StringTokenizer(br.readLine());
				
				newcomers[i][0] = Integer.parseInt(st.nextToken());
				newcomers[i][1] = Integer.parseInt(st.nextToken());
			}
			
			// 서류 등수 순으로 정렬
			Arrays.sort(newcomers, new Comparator<int[]>() {

				@Override
				public int compare(int[] o1, int[] o2) {
					return Integer.compare(o1[0], o2[0]);
				}
				
			});
			
			// 1등은 무조건 합격
			int minScore = newcomers[0][1];
			int cnt = 0;
			
			// 2등부터는 앞의 등수와 면접 등수를 비교하여 낮을 경우 둘 다 낮은 등수가 되므로 탈락 
			for (int i = 1; i < N; ++i) {
				if (minScore < newcomers[i][1]) {
					cnt++;
					continue;
				}
				
				minScore = newcomers[i][1];
			}
			
			System.out.println(N - cnt);
		}
	}
}

 

pyo7410/Algorithm

1일 1커밋을 목표로! Contribute to pyo7410/Algorithm development by creating an account on GitHub.

github.com

 

'알고리즘 > 백준' 카테고리의 다른 글

[Java] BOJ 1915번 가장 큰 정사각형  (0) 2021.06.15
[Java] BOJ 17135번 캐슬 디펜스  (0) 2021.06.14
[Java] BOJ 17144번 미세먼지 안녕!  (0) 2021.06.14
[Java] BOJ 2589번 보물섬  (0) 2021.06.11
[Java] BOJ 5430번 AC  (0) 2021.06.10