본문 바로가기
Python3/백준 알고리즘

2022.02.15 [백준] (python 파이썬) 신입 사원

by ian's coding 2022. 2. 15.
728x90
반응형

 

https://www.acmicpc.net/problem/1946

 

1946번: 신입 사원

첫째 줄에는 테스트 케이스의 개수 T(1 ≤ T ≤ 20)가 주어진다. 각 테스트 케이스의 첫째 줄에 지원자의 숫자 N(1 ≤ N ≤ 100,000)이 주어진다. 둘째 줄부터 N개 줄에는 각각의 지원자의 서류심사 성

www.acmicpc.net

 


풀이

이 문제에서 지원자의 범위가 10만이라서 이중 for문을 쓰면 시간 초과가 발생한다. 그래서 우선 지원자의 순위를 arr에 저장하고 서류 순위로 정렬한다. 그러면 arr[0]의 지원자는 서류는 1등 이므로 무조건 합격한다. arr[0]지원자의 면접순위를 min변수에 대입하고 이와 비교해서 기준의 지원자보다 면접순위가 높으면 합격한다. 이 때 만약 min보다 면접순위가 높으면 min에 대입해준다. 이유는 아래의 지원자는 위의 지원자 보다 서류 순위는 항상 낮기 때문에 면접 순위가 높아야 합격하기 때문이다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
import sys
 
input=sys.stdin.readline
T=int(input())
for _ in range(T):
    arr=[]
    n = int(input())
    cnt=1
    for _ in range(n):
        arr.append(list(map(int,input().split())))
    arr.sort()
    min=arr[0][1]
    for i in range(1,n):
        if min>arr[i][1]:
            min=arr[i][1]
            cnt+=1
    print(cnt)
 
cs

 

 

 

 

728x90
반응형

댓글