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

즐겁고치열하게·2022년 11월 3일
0

PS

목록 보기
1/2

42862. 체육복 (탐욕법)

여분의 체육복을 가진 학생은 본인 위치의 앞 뒷자리 학생에게만 체육복을 빌려 줄 수 있다.

단, 맨 앞의 학생은 바로 뒷자리 학생에게만 맨 뒷자리 학생은 바로 앞자리 학생에게만 남는 체육복을 건네 줄 수 있다.

따라서 맨 앞자리 학생부터 뒷자리 학생에게 체육복을 넘겨주거나 맨 뒷자리 학생부터 앞자리 학생에게 체육복을 건네주는 방식으로 문제를 해결하면 된다.

def solution(n, lost, reserve):
    answer = 0
    
    # 1 ~ N번 학생이 존재한다면 0번쨰 자리와 N+1번째 자리를 만들어서 처리
    arr = [0] * (n+2)
    
    # 각 학생들의 체육복 여부 증감
    for i in lost:
        arr[i] -= 1
    for i in reserve:
        arr[i] += 1
        
    for i in range(1, n+1):
        if arr[i] == -1:
            if arr[i-1] > 0:
                arr[i] += 1
                arr[i-1] -= 1
            elif arr[i+1] > 0:
                arr[i] += 1
                arr[i+1] -= 1
                
    answer = n - arr.count(-1)
    
    return answer
profile
기술을 공부하는 기술자

0개의 댓글