알고리즘
[백준] 1946 : 신입 사원 - Python(파이썬)
Gray__
2021. 7. 31. 17:54
[Silver 1] 1946 : 신입 사원 - Python
https://www.acmicpc.net/problem/1946
1946번: 신입 사원
첫째 줄에는 테스트 케이스의 개수 T(1 ≤ T ≤ 20)가 주어진다. 각 테스트 케이스의 첫째 줄에 지원자의 숫자 N(1 ≤ N ≤ 100,000)이 주어진다. 둘째 줄부터 N개 줄에는 각각의 지원자의 서류심사 성
www.acmicpc.net

풀이
점수를 입력 받은 후 [value1, value2]의 형태로 리스트에 저장한다.
저장된 리스트를 value1의 값을 기준으로 오름차순으로 정렬한다.
예를 들어 첫번째 테스트 케이스의 경우 [[1, 4], [2, 3], [3, 2], [4, 1], [5, 5] 이러하게 정렬된다.
value1을 기준으로 정렬 되어있으므로, value2만 조건을 판단하여 선발할 수 있는 인원수를 세면 된다.
첫번째 인덱스의 value2를 Max로 설정한 후 value2의 값이 Max보다 작은 값인 경우
즉, 선발할 수 있는 경우 cnt를 1 증가시켜주고 Max값을 해당하는 value2의 값으로 설정한다.
import sys
T = int(sys.stdin.readline())
for i in range(T):
N = int(sys.stdin.readline())
cnt = 1
res = []
for i in range(N):
score = [int(x) for x in sys.stdin.readline().split()]
res.append(score)
res.sort()
Max = res[0][1]
for i in range(0,N):
if Max > res[i][1]:
cnt += 1
Max = res[i][1]
print(cnt)