코딩테스트 대비/Softeer

[Softeer/Python] 택배 마스터 광우 ★★★☆☆ - 효과는 굉장했다!

bluetag_boy 2021. 11. 17. 16:45
반응형
 

Softeer

제한시간 : C/C++/Java/Python/JS(2초) | 메모리 제한 : 256MB 여름 휴가를 떠나기 위해 용돈이 필요했던 광우는 H택배 상하차 아르바이트를 지원 했다. 광우는 평소에 운동을 하지않아 힘쓰는 데에 자신

softeer.ai

 

SOLUTION

import sys
from itertools import permutations

def UpandDown(rail): 
    total = 0
    cnt = 0 # 첫번째 레일부터 탐색하기 위해 선언

    for i in range(K):
        basket = 0

        while True:
            basket += rail[cnt]
            cnt = (cnt+1) % N # 마지막레일에 다다르면 다시 첫번째 레일부터 탐색 
            if basket + rail[cnt] > M: # 다음 레일에 있는 택배를 담았을때 바구니 무게를 초과하면 break
                break
            
        total += basket 

    return total  # K번 횟수를 실행해서 쌓인 total 값 반환 

N, M, K = map(int, sys.stdin.readline().split())
w = list(map(int, sys.stdin.readline().split()))

rail_arr = list(permutations(w, N)) # 레일 배치가 가능한 모든 경우의 수 파악
answer = []

# 브루트 포스 알고리즘
for rail in rail_arr:
    answer.append(UpandDown(rail)) 
    
print(min(answer))