728x90
문제
코드
def solution(n, lost, reserve):
answer = 0
lost_1 = lost
lost = list(set(lost) - set(reserve))
reserve = list(set(reserve) - set(lost_1))
for i in range(len(reserve)):
if(reserve[i]-1 in lost):
del lost[lost.index(reserve[i]-1)]
elif(reserve[i]+1 in lost):
del lost[lost.index(reserve[i]+1)]
answer = n-len(lost)
return answer
코드풀이
n : 총 학생 수
lost : 체육복을 잃어버린 사람의 배열
reserve : 여벌의 체육복을 가진 사람의 배열
answer : 체육복을 입은 사람의 수
체육복을 잃어버린 사람에게 여벌을 가진 사람의 1 만큼 범위안에 있으면 빌려줄 수 있다.
여기에서 알아둘 것은 도난당한 학생이 여벌의 체육복을 가졌을 수도 있다는 것이다.
나는 set을 사용하여 집합으로 그러한 것을 걸러냈다.
그리고 여벌의 체육복을 가지고 있는 배열의 길이만큼 반복문을 시작해 1의 범위를 탐색하여 있으면 빌려주도록 하였다.
300x250
'코딩코딩' 카테고리의 다른 글
[프로그래머스] level1 - 2016년 : 파이썬(Python) 풀이 (0) | 2020.12.16 |
---|---|
[프로그래머스] level2 - 기능개발 : 파이썬(Python) 풀이 (0) | 2020.11.15 |
[프로그래머스] level2 - 프린터 : 파이썬(Python) 풀이 (0) | 2020.09.16 |
[프로그래머스] level2 카펫 - 파이썬(Python) 풀이 (0) | 2020.09.13 |
[프로그래머스] level2 스킬 트리 (0) | 2020.09.09 |