나의 개발일지

[프로그래머스] Lv.1 체육복 [Python, 파이썬] 본문

프로그래머스

[프로그래머스] Lv.1 체육복 [Python, 파이썬]

YoonJuHan 2023. 2. 24. 15:52
def solution(n, lost, reserve):
	# 전체 수에서 체육복을 빼앗긴 사람들의 수를 뺀다.
    answer = n - len(lost)
    # 잃어버린 사람들의 번호를 오름차순으로 정렬 (lost 요소들이 정렬되어 들어오지 않는 케이스가 있기 때문)
    lost.sort() 
    
    # (중복을 제거하는 과정)
    # 여분의 체육복을 들고왔는데 빼앗긴 사람들을 -1로 변경 (이 사람들은 체육복을 빌려줄 수 없음)
    # 빼앗긴 사람도 -1로 변경 
    for i in lost:
        if i in reserve:
            lost[lost.index(i)] = -1
            reserve[reserve.index(i)] = -1

    for i in lost:
    	# -1로 되어있으면 answer += 1(중복된 사람들은 빌려줄 수는 없지만 자신의 체육복은 있어서 수업 참가 가능)
        if i == -1:
            answer += 1
            continue
        # 체육복이 없는 사람의 앞 번호가 여분을 들고 있으면 빌려주고 -1로 변경 (빌려주면 또 못 빌려줌)
        if i - 1 in reserve:
            reserve[reserve.index(i-1)] = -1
            answer += 1
        # 체육복이 없는 사람의 뒷 번호가 여분을 들고 있으면 빌려주고 -1로 변경 (빌려주면 또 못 빌려줌)
        elif i + 1 in reserve:
            reserve[reserve.index(i+1)] = -1
            answer += 1

    return answer

 

Comments