백준 1946번: 신입사원 (https://www.acmicpc.net/problem/1946)
문제의 핵심
1.다른 모든 지원자와 비교했을 때 적어도 하나라도 다른 지원자보다 등수가 높아야한다.
->1차 시험 등수를 기준으로 오름차순 정렬 시킨다.
->정렬된 등수대로 2차 시험 등수를 비교한다.(1차 시험에서 자기 보다 등수가 높은 사람보다 2차 등수가 높아야만 뽑힐 수 있다.)
위 그림과 같이 1차 시험 등수로 오름차순 정렬 시킨 후 2차 시험등수를 비교 해가면 (1,4), (2,3), (3,2), (4,1) 총
네 명의 신입사원이 나오고
두번째 케이스에서는 (1,4), (4,2), (6,1) 로 세 명의 신입사원이 나온다.
import sys
def recruit():
T = int(input())
for i in range(T):
N = int(input())
arr = []
for j in range(N):
a, b = map(int, sys.stdin.readline().split())
arr.append((a, b))
arr.sort()
cnt = 0
aMax = 100001
bMax = 100001
for i in arr:
if i[0] < aMax and i[1] > bMax:
cnt += 1
aMax = i[0]
elif i[0] > aMax and i[1] < bMax:
cnt += 1
bMax = i[1]
elif i[0] < aMax and i[1] < bMax:
cnt += 1
aMax = i[0]
bMax = i[1]
print(cnt)
recruit()
반응형
'알고리즘 문제풀이' 카테고리의 다른 글
11. 백준 1783번: 병든 나이트 문제풀이 (0) | 2020.06.04 |
---|---|
10. 백준 2437번: 저울 문제풀이 (0) | 2020.05.22 |
8. 백준 10610번: 30 문제풀이 (0) | 2020.05.21 |
7. 백준 1541번: 잃어버린 괄호 (0) | 2020.05.21 |
6. 백준 1138번: 한 줄로 서기 (0) | 2020.05.20 |