반응형
https://programmers.co.kr/learn/courses/30/lessons/42862
해당 문제는, 도난당했으면서 여벌이 있는 경우의 친구가 함정이다.
따라서 reserve - lost와 lost - reserve를 각각 구해준다.
또 반복문을 어떻게 돌릴까도 문제인데...
바깥쪽 순회 리스트에서 데이터를 삭제하면 안된다.
따라서 reserve를 순회하며 lost에서 체육복을 받는 경우를 제거하자.
def solution(n, lost, reserve):
# 도난당했지만 여벌이 있는 경우 - 도난 안당함
r_l = set(lost) - set(reserve)
# 여벌이 있지만 도난당한 경우 - 여벌 없음
r_r = set(reserve) - set(lost)
# 여벌이 있는 친구들 iteration...
for i in list(r_r):
# 큰 사람에게 먼저 주면 작은 사람이 못받고 큰 사람이 못주는 경우가 발생한다.
# 작은 사람에게 먼저 주면 큰 사람이 작은사람, 큰 사람에게 모두 줄 수 있음.
if i - 1 in r_l :
r_l.remove(i-1)
elif i + 1 in r_l:
r_l.remove(i+1)
return n-len(r_l)
반응형
'ETC' 카테고리의 다른 글
[LV1] 프로그래머스 역순 정렬하기 mysql (0) | 2020.10.03 |
---|---|
[LV1] 프로그래머스 2016년 python (0) | 2020.10.03 |
[LV1] K번째 수 Python (0) | 2020.10.03 |
[LV1] 모의고사 python (0) | 2020.10.03 |
[LV1] 완주하지 못한 선수 python (0) | 2020.10.03 |