https://school.programmers.co.kr/learn/courses/30/lessons/155651
탐욕법으로 접근.
근무태도 점수와 동료평가 점수에서 근무태도 기준으로 내림차순을 정렬하되 점수가 같으면 동료평가 점수를 기준으로 오름차순으로 정렬한다. 이렇게 정렬하는 이유는 근무태도 점수가 높은 사람의 동료평가 점수보다 낮은 사람들을 걸러내기 위해서다.
그 이후 for문을 돌리는데 이 때 주의해야 할 점은 완호보다 총 점수가 높지만, 다른 사람보다 근무태도 점수와 동료평가 점수가 낮은 사람들은 값에 포함시키면 안된다.
예를 들어 점수 목록이 [[5,5], [3,8], [5,10]]일 때 완호는 2등이 되어야 한다. 이를 방지하기 위해 인센티브를 탈 수 있는 최소의 동료평가 점수를 mininum에 저장하고, 동료평가 점수가 minumum 이상인 원소에 대해서만 조건이 맞는지 판별한다.
minimum <= score[1] 이 조건으로만 인센티브 여부를 판별할 수 있는 이유는 근무태도 점수 기준으로 내림차순 정렬를 했기 때문에 가능하다.
def solution(scores):
answer = 1
wanho = scores[0]
scores = sorted(scores[1:], key =lambda x: (-x[0], x[1]))
minimum = 0
for score in scores:
if score[0] > wanho[0] and score[1] > wanho[1]:
return -1
if minimum <= score[1] and sum(score) > sum(wanho):
answer+=1
minimum = score[1]
return answer