Algorithm/Programmers

[Programmers] Lv1. 체육복

by somida 2021. 5. 12.

문제

바로가기

 

코딩테스트 연습 - 체육복

점심시간에 도둑이 들어, 일부 학생이 체육복을 도난당했습니다. 다행히 여벌 체육복이 있는 학생이 이들에게 체육복을 빌려주려 합니다. 학생들의 번호는 체격 순으로 매겨져 있어, 바로 앞번

programmers.co.kr


풀이

  • lost와 reserve 값이 공통으로 존재하는 것은 제외시켜줘야하기 때문에, set을 활용해서 차집합 구하기
  • 반복문을 돌면서 index가 작은 것(i-1)부터 빌려주고, 만약에 i-1이 없다면 i+1의 학생을 빌려준다.

 

코드

def solution(n, lost, reserve):
    lost1 = set(lost)-set(reserve)
    reserve1 = set(reserve) - set(lost)
    for i in reserve1:
        if i-1 in lost1:
            lost1.remove(i-1)
        elif i+1 in lost1:
            lost1.remove(i+1)
    return n - len(set(lost1))

 

반응형

댓글