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

seulzzang·2022년 9월 12일
0

코딩테스트 연습

목록 보기
6/44

📍문제

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

📍풀이

  • 이 문제의 핵심은 여벌 체육복을 가져온 학생이 체육복을 도난당했을 수 있습니다. 이때 이 학생은 체육복을 하나만 도난당했다고 가정하며, 남은 체육복이 하나이기에 다른 학생에게는 체육복을 빌려줄 수 없습니다. 이 제한사항이다. reserve에 있는 학생이 lost에도 있을 수 있다는 뜻.
  • 중복이 제거되어야만 모든 테스트케이스를 통과할 수 있다.

💻코드

def solution(n, lost, reserve):
    answer = 0 
    new_reserve = set(reserve) - set(lost)
    new_lost = set(lost) - set(reserve)
    
    for nr in new_reserve:
        if nr - 1 in new_lost:
            new_lost.remove(nr-1)
        elif nr + 1 in new_lost:
            new_lost.remove(nr+1)
            
    answer = n - len(new_lost)
    return answer

set를 이용해서 모든 중복이 제거된 new_reservenew_lost를 만들어 준다. 이후 반복문은 체육복을 가지고 있는 학생의 번호 +-1이 new_lost에 있다면 빌려준 것이니, removenew_lost에서 제거해주는 과정.
이 과정을 다 지나고 나면 new_lost에는 체육복을 빌려받지 못해 수업을 못듣는 학생들만 모여있으므로 전체학생수 n에서 len(new_lost)를 빼주면 답이 된다.

profile
중요한 것은 꺾이지 않는 마음

0개의 댓글