진박사의 일상

[프로그래머스] Greedy 문제 - 체육복 본문

프로그래밍/코딩테스트 공부

[프로그래머스] Greedy 문제 - 체육복

진박사. 2021. 9. 6. 13:19

문제 : N명의 사람과 체육복을 잃어버린 사람 리스트(lost), 여벌 체육복을 가져온 사람 리스트(reserve)를 받아와 최대로 체육 수업을 들을 수 있는 최대 사람 수를 구하라( 단, 체육복이 있어야 수업이 가능하고 잃어버린 사람은 앞이나 뒷 사람이 여벌 체육복을 가져왔다면 빌릴 수 있다. 단 여벌 체육복을 가져온 사람도 체육복을 잃어버렸으면 빌려줄 수 없다)

 

def solution(n, lost, reserve):
    answer = 0
    try:
        for i in range(n):
            if i+1 in lost and i+1 not in reserve: #잃어버렸을 시
                if i in reserve and i not in lost: #앞에 가지고 있을 때
                    answer += 1
                    reserve.remove(i)
                    continue
                    
                if i+2 in reserve and i+2 not in lost:
                    answer += 1
                    reserve.remove(i+2)
                    continue
            else:
                answer += 1
                
            
    except IndexError:
        pass
    return answer

어렵지는 않았던 것 같은데 조건이 은근히 헷갈렸다.