파이썬 백준 1946번
실버1
https://www.acmicpc.net/problem/1946
문제 보기
분류: 그리디 알고리즘, 정렬
문제 풀기
순위를 2차원 리스트로 입력받아 오름차순 정렬을 하고 순차적인 서류 등수 순번대로 면접 등수를 비교하여 우위에 있는 지원자를 찾는다.
조건을 만족할때 hired 를 하나씩 늘려 선발되는 지원자의 수를 출력한다.
코드 보기
import sys
inputdata = sys.stdin.readline
def fnEmployment(T):
for _ in range(T):
## 지원자 수와 성적 순위를 모두 입력.
applicant_num = int(inputdata().strip())
appl_ls = [list(map(int, inputdata().split())) for _ in range(applicant_num)]
## 면접 순위로 정렬을 먼저하고 서류 순위로 정렬을 하여 저장.
sorted_rank = sorted(appl_ls, key=lambda x: (x[0], x[1]))
print(sorted_rank) # test print
## 서류 순위 오름차순으로 하나씩 꺼내어 면접 순위가 더 우월한 지원자가 있는지 찾음.
## if 문을 만족하면 그 지원자를 다시 기준으로 만들고 hired 카운트를 하나 올림.
above = 0
hired = 1
for i in range(1, len(sorted_rank)):
if sorted_rank[i][1] < sorted_rank[above][1]:
above = i
hired += 1
print(hired)
if __name__ == "__main__":
T = int(inputdata().strip())
fnEmployment(T)
# 2
# 5
# 3 2
# 1 4
# 4 1
# 2 3
# 5 5
# 7
# 3 6
# 7 3
# 4 2
# 1 4
# 5 7
# 2 5
# 6 1
# [[1, 4], [2, 3], [3, 2], [4, 1], [5, 5]]
# 4
# [[1, 4], [2, 5], [3, 6], [4, 2], [5, 7], [6, 1], [7, 3]]
# 3
'공부하기 > 백준' 카테고리의 다른 글
[Python] 백준 풀기 1373 - 2진수 8진수 (0) | 2022.11.24 |
---|---|
[Python] 백준 풀기 10569 - 다면체 (0) | 2022.11.23 |
[Python] 백준 풀기 13023 - ABCDE (0) | 2022.11.21 |
[Python] 백준 풀기 2902 - KMP는 왜 KMP일까? (0) | 2022.11.20 |
[Python] 백준 풀기 1181 - 단어 정렬 (0) | 2022.11.19 |