새소식

백준(BOJ)

[백준] 1946번 신입 사원 : 파이썬(python) 설명

  • -
반응형

 

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)

 

지원자의 서류 순위를 정렬한 후

뒤 인덱스로 갈 때마다 서류 순위는 낮으므로

면접 순위가 높아야 합격합니다

 

합격 순위가 높다면 자동으로 합격으로 판정되며

그 뒤의 지원자는 최근에 합격한 지원자의 면접 순위 보다 높아야 합니다.

즉, 합격 하는 면접 순위가 갱신되어야 합니다.

반응형
Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.