본문 바로가기
Algorithm/Greedy

[프로그래머스] 체육복

by 등촌동 꼬북이 2020. 10. 9.
def solution(n, lost, reserve):
    answer = 0
    answer += (n - len(lost))
    nReserve = []
    for i in range(len(reserve)):
        temp = reserve[i]
        if temp in lost:
            lost.remove(temp)
            answer += 1
        else:
            nReserve.append(temp)
    for i in range(len(lost)):
        for j in range(len(nReserve)):
            if abs(lost[i] - nReserve[j]) == 1:
                answer += 1
                nReserve[j] = -2
                break
    return answer

 

엄청 헤멧다...

 

왜냐...

 

여벌의 체육복을 가져온 애들이 lost에 있을 수 있다는걸

 

자각하지 못하고 풀어서....

 

근데 더 좋은 방법이 있을꺼 같다는 생각이다.. 

 

그래서 조금 해본게

 

def solution(n, lost, reserve):
    answer = 0
    nLost = list(set(lost) - set(reserve))
    nReserve = list(set(reserve) - set(lost))
    answer += (n - len(nLost))
    for i in nLost:
        for j in range(len(nReserve)):
            if abs(i - nReserve[j]) == 1:
                answer += 1
                nReserve[j] = -2
                break
    return answer

 

이건데.. 성능에 큰 차이가 있거나 하진 않은거 같다.. 

'Algorithm > Greedy' 카테고리의 다른 글

[백준] 14916 거스름돈  (0) 2020.10.16
[백준] 11399번 ATM  (0) 2020.10.13
[백준] 11047번 동전 0  (0) 2020.10.07
[백준] 14720번 우유 축제  (0) 2020.10.06
[백준] 10162번 전자레인지  (0) 2020.10.06

댓글