[프로그래머스]체육복/python

Effy_ee·2023년 10월 16일
0

코딩테스트

목록 보기
72/118

👾체육복(Lv.01)
https://school.programmers.co.kr/learn/courses/30/lessons/42862

🖥️ 답안

def solution(n, lost, reserve):
    # 도난당하면서 여분의 옷도 있는 사람들 처리
    set_lost = set(lost) - set(reserve)
    set_reserve = set(reserve) - set(lost)

    for r in list(set_reserve):
        if r-1 in set_lost:
            set_lost.remove(r-1)
            continue
        if r+1 in set_lost:
            set_lost.remove(r+1)
            
    return n - len(set_lost)
  • 먼저, 도난당한 학생들(lost)과 여벌의 체육복을 가진 학생들(reserve) 사이에 중복되는 학생, 즉 자신의 여벌 체육복을 사용해야 하는 학생들을 제외시킵니다. 이를 위해 파이썬의 set 연산 -를 사용하여 lost와 reserve에서 겹치는 부분을 제거합니다.
  • 그런 다음, 남은 여벌의 체육복을 가진 학생들 리스트(set_reserve)를 순회하면서 각각의 학생이 앞번호 혹은 뒷번호에 해당하는 도난당한 학생에게 체육복을 줄 수 있는지 확인합니다. 만약 줄 수 있다면, 해당 도난당한 학생은 더 이상 체육복이 없는 상태가 아니므로 set_lost에서 제거됩니다.
  • 마지막으로 전체학생수 n에서 여전히 체육복이 없는 (set_lost에 남아있는)학생수를 뺀 값을 반환합니다.

0개의 댓글