링크 : programmers.co.kr/learn/courses/30/lessons/42862
def solution(n, lost, reserve):
reserve1 = list(set(reserve)-set(lost))
lost1 = list(set(lost)-set(reserve))
answer = n - len(lost1)
for i in range(len(reserve1)):
if reserve1[i]-1 in lost1:
answer += 1
lost1.remove(reserve1[i]-1)
continue
elif reserve1[i]+1 in lost1:
answer += 1
lost1.remove(reserve1[i]+1)
return answer
첨에 쉬워보였었는데 테스트 5, 7 에서 계속 실패가 떠버렸다.
1. reserve와 lost를 정렬해주었다. 인덱스로 학생들의 번호로 접근하고 있는데 학생들의 번호가 순서대로 되어있지 않은 경우 때문에 정렬이 필요하다. 여기서 테스트 7번은 성공이 떴다.
2. 제한사항에 여벌 체육복을 가져온 학생이 체육복을 도난당할 수 도있는데 그렇게되면 남은 체육복은 하나이기 때문에 빌려줄 수 없다고 한다.
여기서 어떻게 reserve와 lost 각 각 리스트의 동일 값을 제거해주지... 라고 생각해서 for문 돌릴때 lost로 했다가 reserve로 했는데 나중보니까 뭘로 for문 돌든 상관없는거였다.
많은 삽질 끝에 검색하여 reserve1 = list(set(reserve)-set(lost))와 lost1 = list(set(lost)-set(reserve))을 해주어서 같은 값 없애주고 각 각 체육복 잃어버린 학생과 여분체육복 가지고 있는 학생을 구했다.... ㅜ
'알고리즘 > 프로그래머스' 카테고리의 다른 글
[Level2] 최솟값 만들기 (0) | 2021.04.12 |
---|---|
[Level1] 나누어 떨어지는 숫자 배열 (0) | 2021.04.07 |
[Level1] 두 개 뽑아서 더하기 (0) | 2021.04.06 |
[Level1] 크레인 인형뽑기 게임 (0) | 2021.04.05 |
[Level1]완주하지 못한 선수 (0) | 2021.04.05 |