https://www.acmicpc.net/problem/1946
문제 해석
지원자의 서류 성적, 면접 성적의 순위가 주어진다. 두 개의 성적 어느한 것도 다른 지원자보다 떨이지지 않으면 선발한다.
즉 다른 지원자의 순위보다 모두 낮다면 떨어진다. 선발할 수 있는 신입사원의 최대 인원수를 구하는 문제이다.
코드
input = __import__('sys').stdin.readline
t = int(input())
for i in range(t):
arr = []
n = int(input())
for j in range(n):
a, b = map(int, input().split())
arr.append((a, b))
arr = sorted(arr, key = lambda x: [x[0]])
ans = n
temp = arr[0][1]
for j in range(1, len(arr)):
if arr[j][1] < temp:
temp = arr[j][1]
else:
ans -= 1
print(ans)
문제 풀이
입력 받은 순위를 하나의 배열에 넣고, 서류 순위에 따라 정렬을 해주었다.
첫번째에 위치한 서류 순위 1등은 항상 선발 될 수 있다. 따라서 이후 확인할 지원자가 해당 지원자의 면접 순위보다 낮다면
탈락하게된다. 또한 합격할 수 있다면 면접 순위를 업데이트 하면서 최소 합격 순위 커트라인을 지정해준다.
합격 할 수 없다면 지원자 수 n에서 -1을 해주어 정답을 구해주었다.
'알고리즘 > BOJ' 카테고리의 다른 글
[BOJ/python] 1339번 단어 수학 (0) | 2022.07.31 |
---|---|
[BOJ/python] 1439번 뒤집기 (0) | 2022.07.30 |
[BOJ/python] 1931번 회의실 배정 (0) | 2022.07.30 |
[BOJ/python] 1715번 카드 정렬하기 (0) | 2022.07.26 |
[BOJ/python] 17141번 연구소 2 (0) | 2022.07.21 |