본문 바로가기

프로그래머스 알고리즘 문제/Level 1

프로그래머스 Level 1 - 체육복

내 정답:

 

def solution(n, lost, reserve):
    l_and_r = list(set(lost).intersection(set(reserve)))
    for i in l_and_r:
        lost.remove(i)
        reserve.remove(i)
    print(lost, reserve)
    answer = n - len(lost)
    for i in list(lost):
        if reserve.count(i-1) > 0:
            lost.remove(i)
            reserve.remove(i-1)
            answer += 1
        elif reserve.count(i+1) > 0:
            lost.remove(i)
            reserve.remove(i+1)
            answer += 1
    return answer

 

다른 사람들의 정답:

 

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)