[프로그래머스] 체육복Lv.1 - Python
나의 풀이
def solution(n, lost, reserve):
a = [1] * n
for i in lost:
a[i - 1] -= 1
for i in reserve:
a[i - 1] += 1
for i in range(n):
if a[i] == 0:
if i > 0 and a[i - 1] == 2:
a[i - 1] -= 1
a[i] += 1
elif i < n - 1 and a[i + 1] == 2:
a[i + 1] -= 1
a[i] += 1
else:
continue
return n - a.count(0)
- 값이 1, 사이즈가 n인 리스트를 생성해준다.
- 체육복을 잃어버린 학생의 인덱스는 -1을, 여벌을 가지고 있는 학생의 인덱스는 +1 을 해준다.
- 전체 학생 중에서 만약 체육복이 없는 학생이 있다면, 해당 학생이 첫번째 학생이 아니면서 이전의 학생이 여벌을 가지고 있다면, 빌려받는다. 아니면 마지막 학생이 아니면서, 다음 학생이 여벌을 가지고 있다면, 빌려받는다. 둘다 아니라면 빌려받을 수 있는 학생이 없기 때문에 스킵한다.
- 전체 학생 - 값이 0(빌려받지 못한 학생) 수 를 계산하여 반환한다.
느낀점
처음에 테스트코드의 답은 계속 맞았으나 실패가 자꾸 떴다. 나중에 if문에서 인덱스를 저렇게 수정하고 나니 통과하였다.
Author And Source
이 문제에 관하여([프로그래머스] 체육복Lv.1 - Python), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@goshk95/프로그래머스-체육복Lv.1-Python저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)