티스토리 뷰

알고리즘

[프로그래머스] Greedy 문제 체육복

도라지보다더덕 2020. 2. 23. 23:09

문제풀러가기

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

내 풀이

def solution(n, lost, reserve):
    answer = n
    loster = []
    for l in lost:
        if l in reserve:
            reserve.remove(l)
        else:
            loster.append(l)

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

    return answer

탐욕법에 관련된 문제입니다. 문제를 잘못 읽어서 시간낭비를 많이 했네요. ㅠㅠ
도둑 맞은 사람이 여유복이 있을 경우 그냥 잃어버린 사람도, 여유복이 있는 사람도 아니랍니다. 혹시 앞 뒤 다른 사람것을 빌린 뒤
여유옷이 생겼다라고 착각하시면 문제가 안풀립니다. 따라서 처음에 lost와 reserve를 다시 만든 후 생성해야합니다.
list.remove()를 사용했는데 for문에 있는 리스트를 삭제해버리면 for문이 제대로 반복이 안되니 remove사용 시 신중하시길 바랍니다.



참고 풀이 

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]

다른 분 풀이 중 선언과 정의를 한번에 한 풀이 상단 부분인데 깔끔하네요

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/10   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31
글 보관함