Coding Test
[프로그래머스] 체육복
상상쓰
2021. 6. 30. 11:24
https://programmers.co.kr/learn/courses/30/lessons/42862
코딩테스트 연습 - 체육복
점심시간에 도둑이 들어, 일부 학생이 체육복을 도난당했습니다. 다행히 여벌 체육복이 있는 학생이 이들에게 체육복을 빌려주려 합니다. 학생들의 번호는 체격 순으로 매겨져 있어, 바로 앞번
programmers.co.kr
중복된 번호에 대해서는 체육복을 빌리지도 주지도 못하기 때문에 filter 를 통해서 제거한다.
그 후에 도난당한 학생의 번호를 기준으로 조건을 충족하지 못하면 answer 에 1 씩 더하여 최종적으로 n - answer 을 반환한다.
def solution(n, lost, reserve):
answer = 0
lost_ = list(filter(lambda x : x not in reserve, lost))
reserve_ = list(filter(lambda x : x not in lost, reserve))
lost_.sort()
reserve_.sort()
c = 0
for i in lost_:
while True:
if c == len(reserve_):
answer += 1
break
else:
if reserve_[c] in [i - 1, i + 1]:
c += 1
break
else:
if i + 1 < reserve_[c]:
answer += 1
break
else:
c += 1
return n - answer
print(solution(5, [2, 4], [1, 3, 5])) # 5