728x90
풀이
def solution(n, lost, reserve):
lost = set(lost)
reserve = set(reserve)
for i in lost & reserve:
lost.remove(i)
reserve.remove(i)
sorted_lost = sorted(lost)
for i in sorted_lost:
if i-1 in reserve:
lost.remove(i)
reserve.remove(i-1)
elif i+1 in reserve:
lost.remove(i)
reserve.remove(i+1)
return n - len(lost)
내 풀이
- lost와 reserve는 중복이 없다고 했으므로 set으로 만든다. 둘의 교집합이 생기는 경우 자기 체육복을 입으면 되므로 교집합 먼저 처리해준다. 그리고 각 배열에서 학생을 없애준다.
- lost 배열을 정렬하여 sorted_lost에 저장하고 앞에서부터 순서대로 빌려줄 학생이 있는지 검색한다.
- answer은 전체학생(n)에서 체육복이 없는 학생(len(lost))을 빼주면 된다.
반응형
'알고리즘 > 프로그래머스' 카테고리의 다른 글
[프로그래머스 코딩테스트 고득점 Kit / 탐욕법(Greedy)] 큰 수 만들기 (python) (1) | 2024.03.05 |
---|---|
[프로그래머스 코딩테스트 고득점 Kit / 탐욕법(Greedy)] 조이스틱 (python) (0) | 2024.03.04 |
[프로그래머스 코딩테스트 고득점 Kit / 힙(Heap)] 이중우선순위큐 (python) (0) | 2024.02.28 |
[프로그래머스 코딩테스트 고득점 Kit / 힙(Heap)] 더 맵게 (python) (0) | 2024.02.20 |
[프로그래머스 코딩테스트 고득점 Kit / 정렬] H-Index (python) (0) | 2024.02.20 |