728x90
문제
https://itwithruilan.tistory.com/43?category=999011
이전 포스팅에 이어서 계속 같은 문제 도전!
내 풀이
3️⃣세 번째 시도
def solution(n, lost, reserve):
lost = sorted(lost)
reserve = sorted(reserve)
lost_and_reserve_student = set(lost) & set(reserve)
if len(list(lost_and_reserve_student)) != 0:
for student in lost_and_reserve_student:
lost.remove(student)
reserve.remove(student)
taking_class_student = []
for lost_student in lost:
for reserve_student in reserve[:]:
if lost_student == (reserve_student + 1) or lost_student == (reserve_student - 1):
reserve.remove(reserve_student)
taking_class_student.append(lost_student)
break
return n - (len(lost) - len(taking_class_student))
👉🏻Thanks to shk... shk께서 내 코드를 읽어보고 오류가 나는 부분을 찾아 고쳐주었다ㅜㅜ 잃어버린 학생과 빌려줄 학생 리스트를 미리 정렬을 했고 이후 로직은 똑같다.
✅for문과 remove를 함께 쓸 때 주의해야할 점
list = [1, 2, 3, 4, 5]
for i in list:
print(i)
list.remove(i)
#1
#3
#5
👉🏻remove로 list의 요소를 지우면 for문은 지워진 상태의 list를 받아 돌리게 된다. 때문에 for문을 두 번째 돌릴 때 print문에서 2가 나오지 않는 이유는 돌아가는 list 상태가 [2, 3, 4, 5]이기 때문이다. 이 리스트에서 2번째는 3이니까 print할 때 3이 출력된다.
✍🏻list 데이터를 온전히 보전하고 싶으면 [:]를 넣으면 된다. list의 복사본을 넣어서 돌리기 때문에 데이터 누락을 막을 수 있다!
728x90
'그 땐 Algorithm했지 > 그 땐 Programmers했지' 카테고리의 다른 글
[self-study/level 1] SQL | 어린 동물 찾기 | SELECT (0) | 2022.03.02 |
---|---|
[self-study/level 1] SQL | 아픈 동물 찾기 | SELECT (0) | 2022.03.01 |
[self-study/level 1] SQL | 역순 정렬하기 | SELECT (0) | 2022.02.27 |
[self-study/level 1] SQL | 모든 레코드 조회하기 | SELECT (0) | 2022.02.26 |
[self-study/level 1] 체육복 | 탐욕법(Greedy) - 도전편 (1) | 2022.02.25 |