[baekjoon] 신입 사원

김민서·2024년 1월 18일
0

알고리즘 문제풀이

목록 보기
39/47
post-thumbnail

링크텍스트

다른 모든 지원자와 비교했을 때 서류심사 성적과 면접시험 성적 중 적어도 하나가 다른 지원자보다 떨어지지 않는 자만 선발해야 한다. 즉, 어떤 지원자 A의 성적이 다른 어떤 지원자 B의 성적에 비해 서류 심사 결과와 면접 성적이 모두 떨어진다면 A는 결코 선발되지 않는다. 이러한 조건을 만족시키면서, 회사가 이번 신규 사원 채용에서 선발할 수 있는 신입사원의 최대 인원수를 구하는 프로그램을 작성하면 된다.

t = int(input())	
output = []

for _ in range(t):
    infos = []	
    answer = []
    
    n = int(input())    # 지원자 수
    
    for _ in range(n):
        document, interview = map(int, input().split())
        infos.append((document, interview)) # 지원자의 등수 정보
	
    infos.sort()	# 오름차순 정렬
    
    answer.append(infos[0])	# 첫번째 지원자 -> 반드시 합격함 서류 1등이니까
    index = 0
    for i in infos[1:]:	# 첫번째 지원자 제외한 다른 지원자들 탐색
        # 그 뒷 등수 지원자가 첫번째 지원자보다 면접을 잘봤다면(등수는 낮을수록 좋음)
        if answer[index][1] > i[1]:	
            answer.append(i)	# 결과 배열에 추가
            index += 1			# 그 다음 지원자 탐색을 위해 index 증가
            
    output.append(len(answer))
print(*output, sep='\n')

0개의 댓글