프로그래머스(Python) 풀이/Level.1

프로그래머스(Python) Level.1 체육복 풀이

개발윗미 2022. 3. 5. 15:22

Python으로 구현한 42862번 체육복 문제 풀이입니다.

 

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

 

코딩테스트 연습 - 체육복

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

programmers.co.kr


def solution(n, lost, reserve):
    lost_update = list(set(lost) - set(reserve))
    reserve_update = list(set(reserve) - set(lost))
    
    answer = n - len(lost_update)
    for i in lost_update :
        if i-1 in reserve_update :
            answer += 1
            reserve_update.remove(i-1)
        elif i+1 in reserve_update :
            answer += 1
            reserve_update.remove(i+1)
            
    return answer

 

1. 여벌 체육복을 가져온 학생이 체육복을 도난당했을 수 있다고 하였으므로, set을 통해 중복을 제거한다.

 

2. answer의 초기값은 입력받은 n에서 lost_update의 길이를 뺀 값으로 설정한다.

 

3. 반복문을 통해 도난당한 학생(lost_update)을 한명씩 확인하고, i-1 값이 reserve_update에 있을 경우 answer를 1 증가시키고 reserve_update에서 i-1을 제거한다.

 

4. 그렇지 않고 i+1 값이 reserve_update에 있을 경우 answer를 1 증가시키고 reserve_update에서 i+1을 제거한다.

 

5. 반복문이 종료되면 answer를 반환한다.