[프로그래머스] 탐욕법(Greedy) - 체육복 (Level 1)
체육복
풀이과정
- 여벌의 체육복을 가진 학생이 체육복을 도난당했을 때는 본인이 사용한다.
- 번호순대로 빌릴 수 있는 체육복이 있는 학생에게 체육복을 빌려준다.
Python Code
def solution(n, lost, reserve):
answer = n - len(lost)
for i in reserve[:]: #여벌의 체육복을 가진 학생이 도난당했을 때는 본인이 사용
if i in lost:
lost.remove(i)
reserve.remove(i)
answer += 1
for i in lost[:]: #빌릴 수 있는 체육복이 있는 학생들에게 순서대로 빌려줌
if i-1 in reserve:
lost.remove(i)
reserve.remove(i-1)
answer += 1
elif i+1 in reserve:
lost.remove(i)
reserve.remove(i+1)
answer += 1
return answer
오류와 해결 + 새로 알게 된 점
for문을 돌리면서 리스트의 원소를 remove하니 for문이 끝까지 돌지 않아 오류가 났다. 원본 리스트의 사본을 만들어 for문을 돌리니 해결되었다. 리스트[:]를 통해 간단하게 리스트의 사본을 만들 수 있다.
for i in lst[:] #lst의 사본을 만들어 for문을 돌림
if 조건:
lst.remove(i) #원본인 lst에서 원소 제거
다른 사람의 풀이
나는 처음에 빌릴 수 있는 체육복이 1개뿐인 학생과 2개인 학생의 경우를 나눠서 문제를 풀었는데 다른 사람의 풀이를 보니 그냥 처음부터 순서대로 체육복을 빌려줘도 답이 나왔다. 그래서 그렇게 수정했다. 또 나는 체육복을 빌려줄 때마다 answer에 1을 더해 답을 구했는데, 그냥 마지막에 answer = n-len(lost)로 답을 구하는 방법이 있었다.
Author And Source
이 문제에 관하여([프로그래머스] 탐욕법(Greedy) - 체육복 (Level 1)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@imyo/프로그래머스-탐욕법Greedy-체육복-Level-1저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)