💬 문제
문제 난이도: 백준 실버 1
❗️접근 방법
- 서류 등수와 면접 등수가 같이 주어지므로 임의로 하나 기준(ex. 서류 등수)를 기준으로
[서류 등수, 면접 등수]가 원소로 담긴 2차원 배열을 오름차순 정렬한다.
- 오름차순 정렬을 했기 때문에 면접 등수만 고려하면 된다.
- 문제의 조건이 어떤 [서류 등수, 면접 등수]가 다른 임의의 [서류 등수, 면접 등수]보다 모두 낮으면 안된다고 했다.
- 따라서 현재 오름차순으로 정렬된 배열의 0번째 원소는 [1, 면접 등수]일 것이다.
- 이때의 면접 등수가 초기의 기준이 되는 최대 면접 등수(maxTwo)가 된다.
- 2차원 배열을 for문으로 돌면서 maxTwo보다 작은 면접 등수가 나오면 maxTwo를 갱신해주면서 총 합격할 사원의 수를 알아내면 된다.
✅ 정답 코드
import sys
input = sys.stdin.readline
print = sys.stdout.write
T = int(input())
for _ in range(T):
N = int(input())
arr = []
for _ in range(N):
arr.append(tuple(map(int, input().split(' '))))
arr.sort()
cnt = 1
maxTwo = arr[0][1]
for one, two in arr:
if two < maxTwo:
cnt += 1
maxTwo = two
print(f'{cnt}\n')
✍️ 새롭게 배운 부분
- 문제에 딱 맞는 정렬은 수고로움을 엄~청 많이 줄여준다.