본문 바로가기
코딩테스트

[파이썬] 체육복 [CODING TEST #8]

by ALTERww 2022. 7. 20.
320x100

https://school.programmers.co.kr/learn/courses/30/lessons/42862

 

 

일단 제일 중요한 조건은 도난당하고, 여벌이 있는 학생은 빌려줄 수 없고 자신이 입는다는 것. = 그냥 일반 학생과 같음

그래서 lost, reserve에서 양쪽에 모두 있는 값은 둘 다 제거를 해 준다. list comprehension 이용

그리고 reserve 앞에서부터 전,후에 lost가 있는지 보고 있으면 lost에서 제거해준다. reserve는 어차피 loop 한 번만 돌기 때문에 제거 안해도 됨.

 

 


 

위까진 잘 구현했는데, reserve 앞에서부터 돌거면 _lost와 _reserve를 오름차순으로 정렬해줬어야 했다.

20개 중에서 2개만 계속 실패 뜨길래.. 정렬을 안했다.

 

def solution(n, lost, reserve):
    # 잃어버리고, 여벌옷이 있는 사람은 자신이 입게 된다. 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문 써서 할거면 꼭 정렬하기...    
    _lost.sort()
    _reserve.sort()
    
    # reserve 앞에서부터 check.
 	for r in _reserve:
        if r - 1 in _lost:
            _lost.remove(r - 1)
        elif r + 1 in _lost:
            _lost.remove(r + 1)
    return n - len(_lost)

댓글