체육복

Seogyu Gim·2020년 12월 7일
0

코딩테스트

목록 보기
19/47

처음 푼 답

def solution(n, lost, reserve):
    answer = 0
    students = [0 for i in range(n)]
    for l in lost:
        students[l-1] -= 1
    for r in reserve:
        students[r-1] += 1
    for i in range(len(students)):
        if students[i] >= 0:
            answer += 1
        elif students[i-1:i] == [1] and students[i] == -1:
            students[i] = 0
            students[i-1] = 0
            answer += 1
        elif students[i+1:i+2] == [1] and students[i] == -1:
            students[i] = 0
            students[i+1] = 0
            answer += 1
    return answer

다시 푼 답

def solution(n, lost, reserve):
    set_lost = set(lost) - set(reserve)
    set_reserve = set(reserve) - set(lost)
    for i in set_reserve:
        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)

그리디에 익숙하지 않은 것 같다. 연습해야겠다.

profile
의미 있는 일을 하고싶은 개발자

0개의 댓글