프로그래밍/코딩테스트 공부
[프로그래머스] Greedy 문제 - 체육복
진박사.
2021. 9. 6. 13:19
문제 : N명의 사람과 체육복을 잃어버린 사람 리스트(lost), 여벌 체육복을 가져온 사람 리스트(reserve)를 받아와 최대로 체육 수업을 들을 수 있는 최대 사람 수를 구하라( 단, 체육복이 있어야 수업이 가능하고 잃어버린 사람은 앞이나 뒷 사람이 여벌 체육복을 가져왔다면 빌릴 수 있다. 단 여벌 체육복을 가져온 사람도 체육복을 잃어버렸으면 빌려줄 수 없다)
def solution(n, lost, reserve):
answer = 0
try:
for i in range(n):
if i+1 in lost and i+1 not in reserve: #잃어버렸을 시
if i in reserve and i not in lost: #앞에 가지고 있을 때
answer += 1
reserve.remove(i)
continue
if i+2 in reserve and i+2 not in lost:
answer += 1
reserve.remove(i+2)
continue
else:
answer += 1
except IndexError:
pass
return answer
어렵지는 않았던 것 같은데 조건이 은근히 헷갈렸다.