[파이썬] 프로그래머스 LV1 과일장수

청수동햄주먹·2023년 2월 13일
0

프로그래머스 과일장수

나의 풀이

def solution(k, m, score):
    box = []
    score.sort(reverse=True)
    for i,x in enumerate(score):
        if (i+1) % m ==0 and i!=0:
            box.append(x*m)
    return sum(box)
  • 리스트를 내림차수 정렬한다
  • 인덱스+1 값이 m으로 나누어 떨어질 때마다 그 인덱스에 있는 값과 m 을 곱해서 리스트에 넣어준다
  • 그 리스트를 sum()해주며 return

다른 사람의 풀이

def solution(k, m, score):
    return sum(sorted(score)[len(score)%m::m])*m
def solution(k, m, score):
    result = 0
    score.sort(reverse = True)
    for i in range(m - 1, len(score), m):
        result += score[i] * m
    return result

sort(reverse = True) 까지 똑같은데 for-loop 에서 크게 성능이 좌우 되었다..

  • 나는 len(score)까지 모든 숫자를 다 돌았고 이 코드는 m-1 부터 len(score)까지 m 번째마다 돌음 range(m - 1, len(score), m):

성능비교

나의 풀이12
테스트 1 〉통과 (0.03ms, 10.3MB)통과 (0.01ms, 10.1MB)통과 (0.01ms, 10.2MB)
테스트 2 〉통과 (0.01ms, 10.1MB)통과 (0.01ms, 10MB)통과 (0.00ms, 10.1MB)
테스트 3 〉통과 (0.02ms, 10.2MB)통과 (0.01ms, 10.1MB)통과 (0.01ms, 10.2MB)
테스트 4 〉통과 (0.01ms, 10MB)통과 (0.01ms, 10.3MB)통과 (0.01ms, 10.1MB)
테스트 5 〉통과 (0.01ms, 10.2MB)통과 (0.01ms, 10.2MB)통과 (0.01ms, 10.2MB)
테스트 6 〉통과 (10.34ms, 10.8MB)통과 (4.62ms, 11.1MB)통과 (5.63ms, 10.8MB)
테스트 7 〉통과 (11.30ms, 10.8MB)통과 (5.89ms, 11.6MB)통과 (5.60ms, 10.8MB)
테스트 8 〉통과 (1.60ms, 10.3MB)통과 (1.10ms, 10.1MB)통과 (0.79ms, 10.2MB)
테스트 9 〉통과 (11.40ms, 10.9MB)통과 (6.22ms, 11.4MB)통과 (7.83ms, 11MB)
테스트 10 〉통과 (15.01ms, 10.6MB)통과 (4.56ms, 11.1MB)통과 (4.19ms, 10.4MB)
테스트 11 〉통과 (151.59ms, 21.7MB)통과 (87.44ms, 29.2MB)통과 (80.05ms, 21.6MB)
테스트 12 〉통과 (155.13ms, 21.6MB)통과 (79.31ms, 29MB)통과 (78.98ms, 21.6MB)
테스트 13 〉통과 (153.26ms, 21.6MB)통과 (88.71ms, 29.2MB)통과 (77.89ms, 21.6MB)
테스트 14 〉통과 (151.59ms, 21.5MB)통과 (80.83ms, 29.2MB)통과 (77.06ms, 21.5MB)
테스트 15 〉통과 (147.78ms, 21.6MB)통과 (93.58ms, 29.2MB)통과 (105.44ms, 21.4MB)
테스트 16 〉통과 (0.00ms, 10.1MB)통과 (0.01ms, 10.1MB)통과 (0.00ms, 10.1MB)
테스트 17 〉통과 (0.00ms, 10.2MB)통과 (0.01ms, 10.3MB)통과 (0.01ms, 10.3MB)
테스트 18 〉통과 (0.02ms, 10.1MB)통과 (0.01ms, 10.2MB)통과 (0.01ms, 10.2MB)
테스트 19 〉통과 (0.01ms, 10.2MB)통과 (0.01ms, 10.3MB)통과 (0.01ms, 10.2MB)
테스트 20 〉통과 (0.01ms, 10.2MB)통과 (0.01ms, 10.1MB)통과 (0.01ms, 10.1MB)
테스트 21 〉통과 (0.01ms, 10.2MB)통과 (0.00ms, 10.2MB)통과 (0.00ms, 10.1MB)
테스트 22 〉통과 (0.01ms, 10.2MB)통과 (0.00ms, 10.1MB)통과 (0.00ms, 10.2MB)
테스트 23 〉통과 (0.01ms, 10.2MB)통과 (0.00ms, 10.2MB)통과 (0.00ms, 9.99MB)
테스트 24 〉통과 (0.01ms, 10.2MB)통과 (0.00ms, 10.2MB)통과 (0.00ms, 10.1MB)
  • 2번 코드가 1번 코드보다 메모리를 적게 요구함
  • 테스트가 큰 경우 나의 코드가 1번 코드보다 메모리를 적게 요구함. 그대신 시간을 1.5~2배 소요함
  • 2번 코드가 나의 코드보다 시간, 메모리 모두 적게 소요
profile
코딩과 사별까지

0개의 댓글