Leta Learns

[Python] 백준 1946번 - 신입 사원 본문

Coding/백준

[Python] 백준 1946번 - 신입 사원

leta 2022. 2. 16. 11:18

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

 

1946번: 신입 사원

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

www.acmicpc.net

 

1700번에 비하면 쉬운 문제였다. (실버1)

 

순위를 입력받는 거라서 1이 좋은 건데 처음에 5가 좋은 거라고 착각했다.

문제 다시 읽어보다가 깨닫고 수정했다.

 

람다를 이용해서 서류 순위, 면접 순위 기준으로 다중 정렬을 했는데,

동석차가 없으니 서류 기준으로만 정렬하고 서류 1위면 일단 채용한다. (cnt = 1)

서류 1위의 면접 순위를 first 변수에 넣고 for문을 돌려서 면접 순위를 비교하였다.

서류 기준으로 정렬되어 있으므로 앞 사람 보다 면접 순위가 좋아야 선발될 수 있다.

선발될 수 있는 경우 cnt +=1 을 하고

마지막으로 cnt를 프린트해주면 끝.

 

import sys
input = sys.stdin.readline

t = int(input())
for _ in range(t):
    n = int(input())
    rank = [list(map(int, input().split())) for _ in range(n)]
    rank.sort()
    
    cnt = 1 #서류 1위면 일단 채용
    first = rank[0][1] #1위
    for i in range(1, n):
        if first > rank[i][1]:
            first = rank[i][1]
            cnt += 1
    
    print(cnt)

Comments