[프로그래머스]체육복-그리디
SW개발/코딩테스트

[프로그래머스]체육복-그리디

문제 설명
문제 제한사항

 

체육복 문제 코드

def solution(n, lost, reserve):
    set_reserve = set(reserve)-set(lost) 
    set_lost = set(lost)-set(reserve)
    
    for i in set_reserve:
        if i-1 in set_lost:
            set_lost.remove(i-1)
        elif i+1 in set_lost:
            set_lost.remove(i+1)
    
    return n-len(set_lost)

 

코드 설명

먼저 set(집합) 함수를 활용하여 여유 분이 있는 학생들 중에서 잃어버린 경우를 계산하여 체육복 수를 갱신하여 줍니다.

그 후, 잃어버린 학생들 집합에서 여유 분이 있는 학생들 집합을 빼주어 진짜로 잃어버려서 빌려야 하는 학생들만을 집합으로 남겨두고 갱신한다. 여유 분이 있는 학생들의 집합중에서 왼쪽의 학생이 체육복이 잃어버렸을 경우 빌려주고, 아니라면 오른쪽의 학생이 잃어버렸을 경우 체육복을 빌려준다.

마지막으로, 전체 학생수 n 에서 최종적으로 체육복이 없는 학생들의 수를 리턴하여 마무리한다.

728x90