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

청수동햄주먹·2023년 3월 20일
0

파이썬코딩테스트

목록 보기
19/35

프로그래머스 체육복

간단해보이는데 생각을 너무 단순하게 하고 게으름을 피웠더니 오래걸렸음

내 코드

def solution(n, lost, reserve):
    num = len(lost)
    copied = sorted(lost)

    for x in lost:
        # 도둑맞은 경우
        if x in reserve:
            reserve.remove(x)
            copied.remove(x)
            num -= 1

    for x in copied:
        left = x - 1
        right = x + 1
        if left in reserve:
            reserve.remove(left)
            num -= 1
        else :
            if right in reserve:
                reserve.remove(right)
                num -= 1
    return n - num
  • 아예 copied라는 lost가 복사된 분리된 리스트를 만들어서 훔쳐간 경우를 제외해서 진짜 빌려줄수 있는 사람과 없는 사람을 확실하게 해줌
  • 그 copied 리스트를 돌려서 x 왼쪽의 수가 있으면 reserve에서 삭제하면서 체육복을 잃어버린 사람의 수를 줄임. 없다면 오른쪽을 체크하게됨

좋아요 제일 많은 코드

def solution(n, lost, reserve):
    _reserve = sorted([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)

성능비교

내코드좋아요 많은 코드
테스트 1 〉통과 (0.01ms, 10.3MB)통과 (0.01ms, 10.2MB)
테스트 2 〉통과 (0.01ms, 10.2MB)통과 (0.02ms, 10.1MB)
테스트 3 〉통과 (0.01ms, 10.2MB)통과 (0.01ms, 10.3MB)
테스트 4 〉통과 (0.01ms, 10.3MB)통과 (0.01ms, 10.2MB)
테스트 5 〉통과 (0.01ms, 10.2MB)통과 (0.02ms, 10.1MB)
테스트 6 〉통과 (0.01ms, 10.2MB)통과 (0.01ms, 10.3MB)
테스트 7 〉통과 (0.01ms, 10.4MB)통과 (0.02ms, 10.1MB)
테스트 8 〉통과 (0.01ms, 10.2MB)통과 (0.01ms, 10.4MB)
테스트 9 〉통과 (0.01ms, 10.2MB)통과 (0.01ms, 10.1MB)
테스트 10 〉통과 (0.02ms, 10.4MB)통과 (0.01ms, 10.2MB)
테스트 11 〉통과 (0.00ms, 10.2MB)통과 (0.01ms, 10.1MB)
테스트 12 〉통과 (0.01ms, 10.3MB)통과 (0.01ms, 10.4MB)
테스트 13 〉통과 (0.01ms, 10.2MB)통과 (0.01ms, 10.4MB)
테스트 14 〉통과 (0.01ms, 10.2MB)통과 (0.01ms, 10.4MB)
테스트 15 〉통과 (0.01ms, 10.3MB)통과 (0.01ms, 10.4MB)
테스트 16 〉통과 (0.01ms, 10.1MB)통과 (0.01ms, 10.2MB)
테스트 17 〉통과 (0.00ms, 10.1MB)통과 (0.01ms, 10.1MB)
테스트 18 〉통과 (0.00ms, 10.3MB)통과 (0.01ms, 10.2MB)
테스트 19 〉통과 (0.00ms, 10.2MB)통과 (0.01ms, 10.1MB)
테스트 20 〉통과 (0.01ms, 10.2MB)통과 (0.01ms, 10.3MB)
테스트 21 〉통과 (0.01ms, 10.2MB)통과 (0.01ms, 10.2MB)
테스트 22 〉통과 (0.00ms, 10.2MB)통과 (0.01ms, 10.2MB)
테스트 23 〉통과 (0.00ms, 10.1MB)통과 (0.01ms, 10MB)
테스트 24 〉통과 (0.01ms, 10.2MB)통과 (0.01ms, 9.91MB)
테스트 25 〉통과 (0.00ms, 10.2MB)통과 (0.02ms, 10.2MB)

내 코드가 시간은 근소하게 적게 쓰이는 것 같다. 아무래도 훔치는 경우 제외에서 절약한듯 하다

profile
코딩과 사별까지

0개의 댓글