실패 코드
def solution(n, lost, reserve):
answer = 0
every = []
lost = sorted(lost)
reserve = sorted(reserve)
for i in range(1, n+1):
if i not in lost:
every.append(i)
else:
for j in reserve:
if j in lost:
reserve.pop(0)
every.append(j)
break
elif j - 1 == i or j + 1 == i:
reserve.pop(0)
every.append(i)
break
a = set(every)
print(a)
return len(a)
3, 5, 7, 10 테스트 케이스를 실패하는 코드. 이유는 아직 찾고있다..
정답 코드
def solution(n, lost, reserve):
set_reserve = set(reserve) - set(lost)
set_lost = set(lost) - set(reserve)
for i in set_reserve:
if i - 1 in set_lost:
set_lost.remove(i-1)
elif i + 1 in set_lost:
set_lost.remove(i+1)
return n - len(set_lost)
여분을 가지고 있는 본인이 도난 당한 경우는 누구에게도 빌려주지 못하고 본인이 입어야 하므로
도난 당하지 않고, 여분이 없는 상태로 두어야 한다.
그러기 위해서 각 reserve와 lost를 set연산을 통해 겹치는 학생을 삭제 후 풀이한다.
'Programmers' 카테고리의 다른 글
[프로그래머스 / 파이썬 풀이] 예산 (0) | 2023.02.01 |
---|---|
[프로그래머스 / 파이썬 풀이] 크레인 인형뽑기 게임 (0) | 2023.01.31 |
[프로그래머스 / 파이썬 풀이] 실패율 (0) | 2023.01.27 |
[프로그래머스 / 파이썬 풀이] [1차] 비밀지도 (0) | 2023.01.27 |
[프로그래머스 / 파이썬 풀이] 신규 아이디 추천 (1) | 2023.01.26 |