def solution(n, lost, reserve):
answer = 0
plus_one = []
for i in range(n):
if len(lost) < n or len(reserve) < n :
plus_one = reserve.index(lost[i] + 1 or lost[i] - 1)
lost.remove(lost[i])
reserve.remove(plus_one)
answer = n - len(lost)
elif len(lost) == n:
answer = 0
else len(reserve) == n:
answer = n
return answer
: 음..너무 복잡하긴 하다
def solution(n, lost, reserve):
answer = 0
lost_list = list(set(lost) - set(reserve))
reserve_list = list(set(reserve) - set(lost))
#여벌 체육복 가져온 학생이 체육복을 도난당한 경우 제거(중복 제거)
for i in lost_list:
if i + 1 in reserve_list or i - 1 in reserve_list:
lost_list.remove(i)
if len(lost_list) == 0:
answer = n
else:
answer = n - len(lost_list)
return answer
: 제출 결과 반은 성공, 반은 실패. 뭐가..문제지..?
def solution(n, lost, reserve):
answer = 0
lost_list = list(set(lost) - set(reserve))
reserve_list = list(set(reserve) - set(lost))
#여벌 체육복 가져온 학생이 체육복을 도난당한 경우 제거(중복 제거)
for i in reserve_list:
if i + 1 in lost_list:
reserve_list.remove(i)
lost_list.remove(i + 1)
elif i - 1 in lost_list:
reserve_list.remove(i)
lost_list.remove(i - 1)
answer = n - len(lost_list)
return answer
: 2번보다 나아졌다고 생각했는데... 실패해버렸다ㅠㅠ
완벽하다고 생각했는데, 뭐가 문제지..?
def solution(n, lost, reserve):
answer = 0
lost_list = list(set(lost) - set(reserve))
reserve_list = list(set(reserve) - set(lost))
#여벌 체육복 가져온 학생이 체육복을 도난당한 경우 제거(중복 제거)
for i in reserve_list:
if i - 1 in lost_list:
lost_list.remove(i - 1)
elif i + 1 in lost_list:
lost_list.remove(i + 1)
answer = n - len(lost_list)
return answer
: 만약 [2, 4][3, 5]가 있다면, 3번의 경우 3-> 4가 되고, 2와 5가 남아서 실패하기 때문에. i - 1을 먼저 테스트 하는게 나을거 같아서 바꿈.
근데... 테스트 결과, 10개 중 2개 빼고 성공..아니 2개는 왜 실패냐고 으아아아
으아아아아아
결국 실패.
구글링 하면서 얻은 코드 입력해서...풀고..
다른 사람 풀이를 보았다ㅠ
def solution(n, lost, reserve):
_reserve = [r for r in reserve if r not in lost]
_lost = [l for l in lost if l not in reserve]
for r in _reserve:
f = r - 1
b = r + 1
if f in _lost:
_lost.remove(f)
elif b in _lost:
_lost.remove(b)
return n - len(_lost)
이걸 풀어서 쓰면..
def solution(n, lost, reserve):
_reserve = []
_lost = []
for r in reserve:
if r not in lost:
_reserve.append(r)
for l in lost:
if l not in reserve:
_lost.append(l)
for r in _reserve:
f = r - 1
b = r + 1
if f in _lost:
_lost.remove(f)
elif b in _lost:
_lost.remove(b)
return n - len(_lost)
: 테스트케이스가 추가돼서 그런지 이 코드는 18, 20 케이스를 통과하지 못합니다
-> 정렬하면 해결 된다는데... 정렬하는 법은 공부해서 덧붙이자ㅠ