알고리즘
[Programmers] 체육복 with Python
철갑
2022. 1. 31. 17:37
728x90
문제
https://programmers.co.kr/learn/courses/30/lessons/42862
코딩테스트 연습 - 체육복
점심시간에 도둑이 들어, 일부 학생이 체육복을 도난당했습니다. 다행히 여벌 체육복이 있는 학생이 이들에게 체육복을 빌려주려 합니다. 학생들의 번호는 체격 순으로 매겨져 있어, 바로 앞번
programmers.co.kr
풀이
1. 여벌 체육복을 가져온 학생이 도난당했을 경우는 체육복을 빌려줄 수 없는 케이스라고 볼 수 있다. 때문에 lost 와 reserve의 중복 값을 set 집합 자료형을 이용해 제거했다. set의 경우 sorted를 사용해 정렬이 된다. (다만, set을 list로 만들게 되면 순서가 랜덤으로 나열된다)
2. 두 명(앞사람, 뒷사람)다 여분이 있을때는 앞사람(i-1)의 옷을 먼저 빌리도록 해야한다.
답
def solution(n, lost, reserve):
_lost = set(lost) - set(reserve)
_reserve = set(reserve) - set(lost)
for i in _lost:
if i - 1 in _reserve:
_reserve.remove(i - 1)
elif i + 1 in _reserve:
_reserve.remove(i + 1)
else:
n-=1
return n
728x90