티스토리 뷰

[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)
댓글