코딩테스트

[프로그래머스] 체육복 - Lv.1

pyflu 2023. 8. 14. 17:50

[프로그래머스] 체육복 Lv.1 - [파이썬/python]

 

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

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr


 


# 프로그래머스 | 체육복
def solution(n, lost, reserve):
   
    #여벌 가져온 학생이 도난당한 번호 찾기
    spare_stolen = set(lost) & set(reserve)
   
    #spare_stolen로 겹치는거 제거해주기
    # +정렬해주기!!!(앞번호부터 비교해야하기 때문)
    lost = sorted(list(filter(lambda x : x not in spare_stolen, lost)))
    reserve = sorted(list(filter(lambda x : x not in spare_stolen, reserve)))
   
    #lost만큼 for문 돌려주기
    #여벌을 못빌리면 n = n - 1 해주기
    for i in lost:
   
        # (학생 번호 - 1) 이 reserve에 있으면 reserve에서 (학생번호 - 1) 제거
        if (i-1) in reserve:
            reserve.remove(i-1)
       
        # (학생 번호 + 1) 이 reserve에 있으면 reserve에서 (학생번호 + 1) 제거
        elif (i+1) in reserve:
            reserve.remove(i+1)
       
        # 위에 두 조건 경우(if, elif)는 여별을 빌렸으므로 n에서 -1 하지 않아도되지만
        # else의 경우는 빌리지 못했으므로 n에서 -1을 해야한다
        else:
            n -= 1
   
    return n

728x90