728x90
문제
내 풀이
1️⃣첫 번째 시도
def solution(n, lost, reserve):
lost_and_reserve_student = set(lost) & set(reserve)
for student in lost_and_reserve_student:
lost.remove(student)
reserve.remove(student)
if len(lost) > len(reserve):
return n - (len(lost) - len(reserve))
else:
return n
👉🏻일단 여벌의 체육복을 가져왔는데 도난당한 학생들을 lost와 reserve에서 제외시켰다. 그리고 나서 체육 수업을 들을 수 있는 학생 수를 반환했다.
✅set
📌중복이 없는 자료구조이다.
lost = [2, 4]
reserve = [1, 2, 3, 5]
set1 = set(lost) & set(reserve)
set2 = set(lost) | set(reserve)
set3 = set(lost) - set(reserve)
print('교집합 : ', set1) #교집합 : {2}
print('합집합 : ', set2) #합집합 : {1, 2, 3, 4, 5}
print('차집합 : ', set3) #차집합 : {4}
👉🏻교집합 기호 & 두 리스트의 공통되는 원소를 반환한다.
👉🏻합집합 기호 | 두 리스트를 합쳐 중복되는 요소를 제거하고 반환한다.
👉🏻차집합 기호 - 한 리스트에서 다른 리스트와 공통되는 원소를 제외하고 반환한다.
🐰여기서 맞을 줄 알았는데 정답률 70%가 나와서 당ㅋ황ㅋ
2️⃣두 번째 시도
def solution(n, lost, 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))
👉🏻문제를 여러번 읽으며 체격에 따라 번호가 매겨져 있어 앞번호나 뒷번호 학생에게만 체육복을 빌릴 수 있다는 사실을 알게 되었다... 으앙 문제 좀 제발 잘 앍자ㅜㅜ 그래서 다시 이중 for문을 돌리면서 빌려주는 학생의 체격과 잃어버린 학생의 체격을 비교해 잃어버렸지만 빌릴 수 있는 학생들을 리스트에 따로 모았다. 그리고 잃어버린 학생들에서 잃어버렸지만 빌린 학생 수를 빼 전체 학생수에서 뺐다.
🐰결과적으로 실패... ㅜㅜ 하루종일 잡았는데 안 풀려서 속상하지만 구글링을 더 해야겠다. 다른 문제도 풀 게 많아서 이건 일단 보류... 담에 또 보장
728x90
'그 땐 Algorithm했지 > 그 땐 Programmers했지' 카테고리의 다른 글
[self-study/level 1] SQL | 역순 정렬하기 | SELECT (0) | 2022.02.27 |
---|---|
[self-study/level 1] SQL | 모든 레코드 조회하기 | SELECT (0) | 2022.02.26 |
[TAVE/level 2] 튜플 (0) | 2022.02.24 |
[TAVE/level 1] 나머지가 1이 되는 수 찾기 (0) | 2021.12.22 |
[TAVE/level 1] 문자열 다루기 기본 (0) | 2021.12.20 |