[프로그래머스] 체육복 _ 파이썬

메링·2021년 6월 3일
0

알고리즘 문제

목록 보기
5/22

1단계라서 빨리 풀 줄 알았는데 생각을 잘못해서 오래걸린 문제.

1차 시도 (12번 테케 실패)

그냥 반복문에서 가장 상단에 놨으니까 여분 체육복 있는 사람이 도둑맞은 경우를 제일 먼저 제거해줬다고 바보 같이 생각함.
12번 테스트 케이스 실패하는 분들 5, [1,2,3], [2,3,4] -> 4
이걸로 생각해보시면 바로 나옵니다..
1이 가장 처음으로 들어갔을 때 아직 2, 3이 reserve에서 제거되지 않은 상태임.

def solution(n, lost, reserve):
    answer = n - len(lost)

    for l in lost:
        if l in reserve:
            reserve.remove(l)
            answer += 1
            continue
        elif l - 1 in reserve:
            reserve.remove(l - 1)
            answer += 1
            continue
        elif l + 1 in reserve:
            reserve.remove(l + 1)
            answer += 1

    return answer

2차 시도 (성공)

def solution(n, lost, reserve):
    new_lost = set(lost) - set(reserve)
    new_reserve = set(reserve) - set(lost)
    answer = n - len(new_lost)
    
    for l in new_lost:
        if l-1 in new_reserve:
            new_reserve.remove(l-1)
            answer += 1
            continue
        elif l+1 in new_reserve:
            new_reserve.remove(l+1)
            answer += 1
            
    return answer
profile
https://github.com/HeaRinKim

0개의 댓글