본문 바로가기
문제 풀이/소프티어 (Softeer)

[Python] 소프티어 : 택배 마스터 광우

by 희조당 2023. 2. 9.
728x90

https://softeer.ai/practice/info.do?idx=1&eid=581 

 

Softeer

연습문제를 담을 Set을 선택해주세요. 취소 확인

softeer.ai


💡 문제 풀이

기본적인 그리디? 문제이다.

사실 백트래킹으로 풀어야 할 것 같지만 파이썬의 강력한 라이브러리인 itertools를 사용해서 순열을 구현한다면 쉽게 해결할 수 있다.

✔️ 느낀 점

그렇게 어렵지 않았지만 익숙해지는 시간이 필요한 것 같다. 문법에 아직도 많이 적응을 못한 것 같다.

💻 코드

from itertools import permutations
import sys
input = sys.stdin.readline

answer = 99999
n, m, k = map(int, input().split())
rails = list(map(int, input().split()))

def calculate(current):
    totalWeight, weight = 0, current[0]
    idx, cnt = 0, 0
    
    while cnt < k:
        nextWeight = current[(idx + 1) % n]
        if weight + nextWeight > m:
            totalWeight += weight
            weight = nextWeight
            cnt += 1
        else:
            weight += nextWeight
        idx += 1
            
    return totalWeight

for p in permutations(rails, n):
    answer = min(answer, calculate(list(p)))

print(answer)

댓글