본문 바로가기
코딩공부/프로그래머스 (python)

[프로그래머스] 체육복 (Python)

by CodingKwon 2022. 3. 27.

문제 링크 (Level 1)

https://programmers.co.kr/learn/courses/30/lessons/42862?language=python3 

 

코딩테스트 연습 - 체육복

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

programmers.co.kr

 

나의 코드 (Python)

def solution(n, lost, reserve):
    
    set_reserve = set(reserve) - set(lost)  # 진짜 여분
    set_lost = set(lost) - set(reserve)     # 진짜 체육복이 필요한 사람

    for i in set_reserve:   # 진짜 여분 체육복으로 반복문
        # 체육복이 필요한데 체육복이 있다면 진짜 체육복이 필요한 사람 -1
        if i-1 in set_lost:
            set_lost.remove(i-1)
        elif i+1 in set_lost:
            set_lost.remove(i+1)
    
    return n-len(set_lost)  # 전체 - 진짜 체육복이 필요한 사람

 

1. 진짜 여분 체육복을 구하고 진짜 체육복이 필요한 사람을 구한다. (list끼리 뺄 수 없으므로 set으로 변환)

2. 진짜 여분 체육복으로 체육복이 필요한 사람이 앞뒤로 있는지 판단 후 있으면 체육복이 필요한 사람 제거

3. 전체에서 체육복이 아직도 필요한 사람을 빼면 체육에 참여할 수 있는 인원이 남음

 

댓글