티스토리 뷰

입력이 많은 문제이다. 시간 초과가 나면 input 대신 sys.stdin.readline() 을 사용할 것!!

 

* 처음에는 주어진 숫자들이 순위가 아니라 점수인 줄 알고 문제 이해를 못했었다.. 문제를 잘 읽자!!

 

우선 첫번째 순위로 정렬을 해준다.

1 4

2 3

3 2

4 1

5 5

 

그러고 나면 두번째 순위만 따져주면 된다. 

rank라는 변수에 첫번째 사원의 두번째 순위를 초기값으로 넣어준다.

 

아래 사람으로 갈수록 첫번째 순위는 전 사람보다 낮기에 두번째 순위가 rank(이전 사원의 순위)보다 커야 선발이 된다.

1 4

2 3

이 두 사람을 비교할 땐, rank=4와 3을 비교하게 된다. 4등보다 3등이 높으므로 두번째 사람은 선발된다. 

rank는 더 높은 순위의 것으로 업데이트해준다. 

4 1

5 5

이 두 사람을 비교할 땐, rank = 1과 5를 비교하게 된다.

이때는 1등보다 5등이 낮으므로 다음 사람은 선발되지 않는다.

이때 rank는 업데이트되지 않는다.

import sys
def solution(employees, n):
    answer = n
    employees.sort(key=lambda x: x[0])
    rank = employees[0][1]
    for i in range(1, n):
        if employees[i][1] > rank:
            answer -= 1
        else:
            rank = employees[i][1]
    return answer

T = int(input())
for _ in range(T):
    N = int(input())
    employees = []
    for _ in range(N):
        s1, s2 = map(int, sys.stdin.readline().split())
        employees.append([s1, s2])
    print(solution(employees, len(employees)))

 

 

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

 

1946번: 신입 사원

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

www.acmicpc.net