1946번: 신입 사원
첫째 줄에는 테스트 케이스의 개수 T(1 ≤ T ≤ 20)가 주어진다. 각 테스트 케이스의 첫째 줄에 지원자의 숫자 N(1 ≤ N ≤ 100,000)이 주어진다. 둘째 줄부터 N개 줄에는 각각의 지원자의 서류심사 성
www.acmicpc.net
그리디 알고리즘.
먼저, 서류 순위를 기준으로 정렬을 해준다. 서류 1등은 무조건 뽑히기 때문에 서류 1등의 면접 순위를 기준으로 나머지 지원자들의 면접 순위 비교를 진행한다. 참고로 문제에서 주어지는 값은 성적이 아닌 순위이다. 계속 성적으로 생각하며 문제 풀이하다가 깨닫고 고쳐서 정답판정을 받았다.
아 시간 초과도 발생하였는데 input 을 sys.stdin.readline 으로 치환해 해결하였다.
import sys
input = sys.stdin.readline
for tc in range(int(input())):
n = int(input())
appliers = []
for _ in range(n):
appliers.append(list(map(int, input().split())))
appliers.sort(key=lambda x: x[0])
result = 1
temp = appliers[0][1]
for i in range(1, n):
if temp > appliers[i][1]:
result += 1
temp = appliers[i][1]
print(result)
'로직과의 사투 > Algorithm' 카테고리의 다른 글
코딜리티 Lesson 1, Binary Gap - Java (0) | 2021.05.26 |
---|---|
백준 알고리즘 1495번 기타리스트 - 파이썬 (0) | 2021.04.30 |
백준 알고리즘 1654번 랜선 자르기 - 파이썬 (0) | 2021.04.29 |
백준 알고리즘 4485번 녹색 옷 입은 애가 젤다지? - 파이썬 (0) | 2021.04.28 |
백준 알고리즘 4963번 섬의 개수 - 파이썬 (0) | 2021.04.27 |