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

 

1946번: 신입 사원

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

www.acmicpc.net


풀이 과정


  1. 지원자 A의 성적이 어떤 지원자 B보다 서류 심사, 면접 성적이 모두 떨어지는 경우는 선발되지 않는다라는 조건이 있으므로, 따라서 서류 심사를 기준으로 오름차순 정렬을 해 준다.
  2. 정렬된 리스트를 기준으로 순차적으로 지원자를 검사한다.
    1. 서류 심사를 기준으로 오름차순 정렬을 해주었으므로, 서류심사 성적은 무조건 이전 지원자보다 안좋다고 볼 수 있으므로, 면접 성적만을 보면 된다.
    2. 따라서, 이전 지원자들보다 면접 성적이 좋아야만 합격이다. 따라서, 합격한 지원자들의 면접 성적중 가장 좋은 면접 성적보다 좋은지 확인하고, 좋다면 가장 좋은 면접 성적을 갱신하고 합격 카운팅을 해준다.
  3. 전체 합격자의 수를 출력한다.

소스 코드


import sys

input = lambda: sys.stdin.readline().rstrip()
T = int(input())

for _ in range(T):
    N = int(input())
    applicants = [list(map(int, input().split())) for _ in range(N)]
    applicants.sort()
    max_r2 = 999999
    answer = 0
    for _, r2 in applicants:
        if r2 < max_r2:
            max_r2 = r2
            answer += 1

    print(answer)

  

+ Recent posts