취업 및 이직 준비/코딩테스트 준비

코딩테스트 - 파이썬 - 상자 채우기

code2772 2023. 4. 19. 18:24
728x90
반응형
def solution(n):
    if n == 0:
        return 0

    box_5 = n // 5  # 5kg 무게의 상자 개수를 최대한 많이 채우는 경우를 계산하여 box_5에 저장
    while box_5 >= 0:  # box_5 값이 0 이상인 동안 반복
        remaining = n - (5 * box_5)  # 남은 무게를 계산하여 remaining에 저장
        if remaining % 3 == 0:  # 남은 무게가 3의 배수인 경우, 3kg 무게의 상자로 채울 수 있음
            box_3 = remaining // 3  # 3kg 무게의 상자 개수를 계산하여 box_3에 저장
            return box_5 + box_3  # 5kg과 3kg 무게의 상자 개수를 합하여 반환
        box_5 -= 1  # 가능한 경우가 없는 경우, box_5 값을 1씩 감소시켜 다시 반복
    return -1  # 가능한 경우를 찾지 못하면 -1 반환

1. 정수 n을 입력으로 받고 n 항목을 운반하는 데 필요한 최소 상자 수를 반환하는 함수입니다. 여기서 상자에는 3개 또는 5개의 항목이 포함될 수 있습니다.

2. 함수는 먼저 n이 0인지 확인합니다. 이 경우 상자가 필요하지 않으므로 0을 반환합니다. 그런 다음 'box_5'를 사용할 수 있는 최대 5개 항목 상자 수로 초기화합니다. 이는 'n'을 5로 나눈 값(정수 나누기)과 같습니다.

3. 그런 다음 함수는 0에 도달할 때까지 'box_5'를 감소시키는 루프에 들어갑니다. 루프의 각 반복에서 5개의 항목 상자로 압축할 수 없는 나머지 항목 수는 'remaining = n - (5 * box_5)로 계산됩니다. `. 'remaining'이 3으로 나누어지면 나머지 항목은 3개 항목 상자로 채워질 수 있으며 필요한 3개 항목 상자의 수는 'remaining // 3'과 같습니다. 그런 다음 함수는 5개 항목 상자 수와 3개 항목 상자 수의 합계인 필요한 총 상자 수를 반환합니다.

4. 모든 n 항목을 포장하는 데 상자 조합을 사용할 수 없는 경우 루프는 결국 box_5 = 0에 도달하고 함수는 -1을 반환하여 모든 항목을 포장할 수 없음을 나타냅니다.



반응형