코딩테스트/프로그래머스

[프로그래머스][정렬] 인사고과

박소민 2025. 6. 9. 15:26
인사고과
 

프로그래머스

SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프

programmers.co.kr

 

  • 내 풀이
    • wanho 보다 합이 큰 수들만 정렬하면서 filtered에 저장
    • 아래 기준으로 정렬 후, 완호가 지배당할 경우 확인하면서 순위 확인
    • filtered.sort(key= lambda x:(-x[0],x[1]))
      • 오름차순, 내림차순 정렬하는 이유
        • 뒤로 갈수록 작아지도록 a값을 고정해두는 것
        • 첫번째 값이 동일할때는 b는 작은 값이 앞에 오기 때문에
        • 이후에는 두 번째 점수(b)에 대해서만 max_b를 갱신하며 지배 여부 판별 가능
      • 오름차순, 오름차순 정렬하게 되면
        • a가 동일한 값인데 b가 앞에서 max_b로 업데이트 될 위험이 있음
def solution(scores):
    answer = 0
    wanho=scores[0]
    
    filtered=[]
    for score in scores[1:]:
        if sum(score)<=sum(wanho):
            continue
        filtered.append((score[0], score[1]))
    filtered.sort(key= lambda x:(-x[0],x[1]))
    
        
    cnt=1
    max_b=0
    for a,b in filtered:
        
        if wanho[0]<a and wanho[1]<b:
            return -1
            
        if b<max_b:
            continue
        cnt+=1
        max_b=b
    
    answer=cnt
    return answer