4. 과일 장수

·2022년 11월 17일

1차

def solution(k, m, score):
    answer = 0
    a = []
    min = 0
    score.sort(reverse=True) #역순으로 정렬
    while len(score) >= m:
        #최저점수
        min = score[m-1] 
        del score[0:m] #제거
        answer += min * m
    return answer

결과 : 테스트 11,12,13,14,15 실패 ( 시간초과 )
-> while문 사용으로 인한 시간초과로 생각 for문으로 바꾸기

2차

def solution(k, m, score):
    answer = 0    
    score.sort(reverse=True) # 역순으로 정렬
    
    #이익이 발생하지 않는 경우
    if len(score) < m :  
        return 0 

    n = len(score) // m  # 반복하는 횟수
    
    # 1~n+1까지 반복하여 이익 계산
    for i in range(1,n+1)  : 
        answer += m*score[m*i-1]
        
    return answer

결과 : 통과

출처: 프로그래머스 코딩 테스트 연습,

https://school.programmers.co.kr/learn/courses/30/lessons/135808?language=python3

profile
🐥

0개의 댓글