데이터사이언스 기록기📚

[프로그래머스/Python] Level 3_인사고과 본문

Coding Test/프로그래머스(Python)

[프로그래머스/Python] Level 3_인사고과

syunze 2024. 3. 21. 16:28

📌문제 유형

정렬

 

📌문제

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

📌나의 문제풀이

- 92점

  • scores를 점수 합계 기준으로 내림차순 정렬
  • check에 완호보다 점수 큰 사람들 넣기
  • check 안에서 제외될 사람은 cnt로 확인 -> cnt 수만큼 ans 제외
def solution(scores):
    answer = 0
    attitude, partner = scores[0]

    scores.sort(key = lambda x:(x[0] + x[1]), reverse = True)
    answer = scores.index([attitude,partner]) + 1
    check = scores[:answer]
    check.sort(key = lambda x:(x[1],x[0]), reverse = True)

    
    cnt,flag = 0,0
    for i in range(len(check)):
        att, part = check[i]
        
        for k in range(i+1):
            if check[k][0] == att and check[k][1] == part:
                continue
            
            if att < check[k][0] and part < check[k][1]:
                cnt += 1
                if [att, part] == [attitude, partner]:
                    flag = 1
                break
                
        if flag == 1:
            break
    
    if flag == 1:
        answer = -1
    else:
        answer -= cnt
    
    return answer

 

📌다른사람의 문제풀이

 

[프로그래머스] 인사고과 Python 파이썬 해설 (Level 3) - 이도훈

프로그래머스 Level 3 문제 [인사고과]의 풀이를 정리합니다.

www.ai-bio.info

def solution(scores):
    answer = 0
    target_a, target_b = scores[0]
    target_score = target_a + target_b

    # 첫번째 점수에 대해서 내림차순,
    # 첫 번째 점수가 같으면 두 번째 점수에 대해서 오름차순으로 정렬합니다.
    scores.sort(key=lambda x: (-x[0], x[1]))
    maxb = 0
    
    for a, b in scores:
        if target_a < a and target_b < b:
            return -1
        
        if b >= maxb:
            maxb = b
            if a + b > target_score:
                answer += 1
            
    return answer + 1

 

📌리뷰

- 정렬 관계에 대해서 많이 생각해보기

728x90
Comments