반응형
https://www.acmicpc.net/problem/1946
1946번: 신입 사원
첫째 줄에는 테스트 케이스의 개수 T(1 ≤ T ≤ 20)가 주어진다. 각 테스트 케이스의 첫째 줄에 지원자의 숫자 N(1 ≤ N ≤ 100,000)이 주어진다. 둘째 줄부터 N개 줄에는 각각의 지원자의 서류심사 성
www.acmicpc.net
Hint
신입 사원의 성적을 리스트로 묶어 서류 심사 점수 순으로 정렬합니다.
서류 심사 점수 1등의 신입 사원의 면접 성적 순위를 max_rank로 정합니다.
그 뒤 인덱스의 신입 사원들은 자동으로 서류 심사 순위가 낮으므로
max_rank보다 작아야(순위가 높아야) 신입 사원이 될 수 있습니다.
또한 새로운 신입 사원이 결정된 경우
그 신입 사원의 max_rank는 계속해서 작아지므로
더 작은 값의 max_rank를 가진 사람만 찾아내면 됩니다.
Solution
최대 100,000 번의 입력을 받으므로
빠른 입력을 위해 sys 모듈을 사용했습니다.
[변수 설명]
T= 테스트 케이스 입력
N= 지원자 수
L= 지원자 점수 리스트
new_worker = 신입 사원 수(합격자)
max_rank = 합격 컷(순위)
max_rank보다 숫자가 낮으면 합격합니다
import sys
T=int(input())
for _ in range(T):
N=int(input())
L=[ [0,0] for i in range(N) ]
for i in range(N):
L[i][0],L[i][1] = map(int,sys.stdin.readline().split())
L.sort()
new_worker=0
max_rank=L[0][1]
for i in range(N):
if L[i][1] <= max_rank:
new_worker += 1
max_rank=L[i][1]
print(new_worker)
지원자의 서류 순위를 정렬한 후
뒤 인덱스로 갈 때마다 서류 순위는 낮으므로
면접 순위가 높아야 합격합니다
합격 순위가 높다면 자동으로 합격으로 판정되며
그 뒤의 지원자는 최근에 합격한 지원자의 면접 순위 보다 높아야 합니다.
즉, 합격 하는 면접 순위가 갱신되어야 합니다.
반응형
'백준(BOJ)' 카테고리의 다른 글
[백준] 1932번 정수 삼각형 C++ (0) | 2023.06.29 |
---|---|
[백준] 14940번 쉬운 최단거리 C++ (0) | 2023.06.27 |
[백준] 6064번 카잉 달력 : C++ / 파이썬(python) 설명 (0) | 2023.02.15 |
[백준]1541번 잃어버린 괄호 : 파이썬(python) 설명 (0) | 2022.08.09 |
[백준] 11724번 연결 요소의 개수 : 파이썬(python) 설명 (0) | 2022.06.23 |