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

CHOI YUN HO·2021년 4월 13일
0

알고리즘 문제풀이

목록 보기
25/63

📃 문제 설명

체육복

[문제 출처 : 프로그래머스]

👨‍💻 해결 방법

크기가 n인 리스트를 만들고, 각 학생의 체육복 개수를 저장한다.
(처음엔 1, 도난당한 학생은 -1, 여벌의 체육복을 가져온 학생은 +1)

그 후 리스트에서 0을 찾는다.(수업을 들을 수 없는 사람)
앞 뒤 학생이 여벌의 옷을 가지고 있는지 확인하고, 있다면 빌린다. 앞 학생에게 우선으로 빌리도록 한다.

n에서 리스트 속 0의 개수를 빼주면 정답이다.

👨‍💻 소스 코드

def solution(n, lost, reserve):
    answer = [1 for i in range(n)]

    for r in reserve:
        answer[r - 1] += 1
    for l in lost:
        answer[l - 1] -= 1

    for i in range(len(answer)):
        if not answer[i]:
            if i != 0 and answer[i - 1] == 2:
                answer[i] += 1
                answer[i - 1] -= 1
            elif i != len(answer) - 1 and answer[i + 1] == 2:
                answer[i] += 1
                answer[i + 1] -= 1

    return len(answer) - answer.count(0)
profile
가재같은 사람

0개의 댓글