728x90
반응형
import copy
def solution(n, lost, reserve):
lost.sort()
reserve.sort()
tmp_lost = copy.deepcopy(lost)
tmp_reserve = copy.deepcopy(reserve)
for i in lost:
for j in reserve:
if i == j :
tmp_lost.remove(i)
tmp_reserve.remove(j)
lost = tmp_lost
reserve = tmp_reserve
answer = n - len(lost)
for i in lost:
if i-1 in reserve :
answer += 1
reserve.remove(i-1)
elif i+1 in reserve:
answer += 1
reserve.remove(i+1)
return answer
쉬워보이는데 오류가 생각보다 많이 난다.
내가 수정한 내용은 아래와 같다.
1. lost 정렬하기 ( greedy 니까 작은 수 부터 정렬해서 앞 사람한테 먼저 빌리고 없으면 다음사람에게 빌린다 )
2. 잃어버렸는데 여벌이 있는 학생 처리하기
- 얘네는 잃어버렸지만, 여분이 있으므로 수업에 참여할 수 있다.
- 하지만 빌려줄 수는 없음.
=> lost 랑 reserve 에 모두 들어가 있는데 실제로 처리는 안되므로 빼주어야 한다.
- 이 때, if 문 안에서 바로 lost 랑 reserve를 remove 로 처리하면 누락 될 수 있으므로, 깊은 copy를 통해 따로 바꿀
리스트를 마련한 다음에 나중에 대입해준다.
3. 처음에 잃어버리지 않은 학생 수를 세는 것은 ( n - len(lost) ) 2 단계 이후에 적용한다.
728x90
반응형
'프로그래머스' 카테고리의 다른 글
2019 카카오 개발자 겨울 인턴십 - 징검다리 건너기 (0) | 2020.10.15 |
---|---|
탐욕법(Greedy) - 구명보트 (0) | 2020.10.13 |
정렬 - H-Index (0) | 2020.10.12 |
정렬 - K번째수 (0) | 2020.10.12 |
깊이/너비 우선 탐색(DFS/BFS)-단어 변환* (0) | 2020.10.11 |