Programmers/1단계

[1단계] [ 탐욕법 ] 체육복

Snowboarder 2022. 5. 18. 14:48

문제

문제접근

  • 항상 하는 말이지만 for while 정말 중요하고 if에서 조건을 어떻게 달아주느냐가 핵심이다.
  • 탐욕법을 활용한다.

문제해석

def solution(n, lost, reserve):
    reserve_set = set(reserve)-set(lost) 
    lost_set = set(lost)-set(reserve) 

    for reserve_person in reserve_set: 
        if reserve_person-1 in lost_set: 
            lost_set.remove(reserve_person-1) 
        elif reserve_person+1 in lost_set: 
            lost_set.remove(reserve_person+1) 

    return n-len(lost_set)
  • for 반복문을 통해서 lostlist를 계속 재초기화 해서 마지막에 lost 함수 개수를 빼라.
def solution(n, lost, reserve):
    _reserve = [r for r in reserve if r not in lost]
    _lost = [l for l in lost if l not in reserve]
    for r in _reserve:
        f = r - 1
        b = r + 1
        if f in _lost:
            _lost.remove(f)
        elif b in _lost:
            _lost.remove(b)
    return n - len(_lost)
  •