알고리즘
프로그래머스(programmers) 체육복 python 정답 [Greedy Algorithm]
TheSapper
2023. 2. 10. 04:41
반응형
프로그래머스(programmers) 체육복 python 정답 [Greedy Algorithm]
문제 링크
https://school.programmers.co.kr/learn/courses/30/lessons/42862
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
문제 정답
def solution(n, lost, reserve):
net_lost = set(lost) - (set(reserve))
net_reserve = set(reserve)-(set(lost))
answer = n - len(net_lost)
for l in sorted(net_lost):
if l-1 in net_reserve:
answer+=1
net_reserve.remove(l-1)
continue
if l+1 in net_reserve:
answer+=1
net_reserve.remove(l+1)
continue
return answer
문제 해설
해당 문제는 함정이 있는데, lost와 reserve에 둘 다 있는 요소가 있을 수 있다는 것이다.
따라서 각각 교집합 요소를 빼준다.
그냥 서로 집합 difference 연산을 해주면 된다.
그 다음 한 집합의 키를 정렬하고, 다른 집합에서 작거나 큰 것부터 하나 하나 집어 가주면 그게 최대값이다.
즉 작은 사람은 최대한 작은것,
혹은 큰 사람은 최대한 큰걸 가져가도록 하면 된다.
반응형