0-1 배낭 문제의 가치
0부터 1000까지인 정수 용량에서 무게와 가치 쌍 최대 64개를 각각 한 번만 사용해 가치를 최대화합니다.
def knapsack_value(items, capacity):
items = tuple(tuple(item) for item in items)
if type(capacity) is not int or not 0 <= capacity <= 1000:
raise ValueError("capacity.range")
if len(items) > 64 or any(len(item) != 2 for item in items):
raise ValueError("items.shape")
if any(type(w) is not int or type(v) is not int or not 1 <= w <= 1000 or not 0 <= v <= 1000000 for w, v in items):
raise ValueError("item.range")
best = [0] * (capacity + 1)
for weight, value in items:
for limit in range(capacity, weight - 1, -1):
best[limit] = max(best[limit], best[limit - weight] + value)
return best[capacity]적용하기 전에 검토하세요
실제 동작을 예상 결과와 비교하세요. 검사가 실패하면 다음 변경을 하기 전에 원인을 조사하세요.
모델
기본 URL과 필요한 API 키로 OpenAI 호환 또는 Anthropic 엔드포인트를 설정하고 연결을 테스트하세요. 로컬 모델 서버는 실행 중이어야 합니다. 원격 도구는 데이터를 별도로 전송할 수 있습니다.
프로젝트
용량 0과 너무 무거운 물건을 시험하고 표를 만들기 전에 무게 0이나 정수가 아닌 피연산자를 거부합니다.
def knapsack_value(items, capacity):
items = tuple(tuple(item) for item in items)
if type(capacity) is not int or not 0 <= capacity <= 1000:
raise ValueError("capacity.range")
if len(items) > 64 or any(len(item) != 2 for item in items):
raise ValueError("items.shape")
if any(type(w) is not int or type(v) is not int or not 1 <= w <= 1000 or not 0 <= v <= 1000000 for w, v in items):
raise ValueError("item.range")
best = [0] * (capacity + 1)
for weight, value in items:
for limit in range(capacity, weight - 1, -1):
best[limit] = max(best[limit], best[limit - weight] + value)
return best[capacity]선택 규칙과 그 규칙을 구현하는 코드를 구분하세요
PackSerein은 최적화 요구사항을 구현 파일과 함께 논의할 수 있는 Windows 프로젝트 작업 공간에서 AI 지원 소프트웨어 작업을 돕습니다. 무엇을 선택할 수 있고 어떤 제약이 필수이며 호출자가 실제로 어떤 결과를 필요로 하는지 설명하세요. 해결 코드를 바꾸기 전에 도우미에게 현재 표현을 살펴보도록 요청하세요. 명확한 목적은 그럴듯한 구현이 미묘하게 다른 문제를 푸는 일을 막습니다.
knapsack.py 예제는 용량 한도 아래 각 항목을 최대 한 번 선택하는 검토 작업을 제시합니다. 제안된 갱신이 그 규칙을 보존하는지, 애플리케이션에 값만 필요한지 선택된 항목도 필요한지 물어볼 수 있습니다. 작은 사례를 손으로 풀어 본 뒤 코드와 대조하세요. 입력 한도와 거부되는 값도 같은 검토에 포함하세요.
패치가 준비되면 빈 선택, 용량 경계, 경쟁하는 조합에 대한 프로젝트 테스트를 실행하세요. 사용처를 수정하기 전에 출력 계약을 확인하세요. PackSerein은 지원되는 OpenAI 호환 또는 Anthropic 엔드포인트와 필요할 때 인증 정보를 사용합니다. 연결에서 제공되는 경우 필터 없는 AI 모델을 선택할 수 있으며, 제한, 컨텍스트 한도, 도구 지원은 여전히 모델과 서버에 따라 달라집니다. 작업 공간은 코딩 결정을 체계화하고, 목적 충족 여부는 자체 검사로 판단합니다.
최적화 작업을 정의하는 질문
- 항목을 두 번 선택할 수 있는지 명시해야 하는 이유는 무엇인가요?
반복 선택 허용은 문제를 바꾸며 결과도 바꿀 수 있습니다. 요청에 그 제약을 넣고 반복하면 답이 달라지는 작은 사례를 테스트한 뒤, 갱신이 제약을 유지하는지 살펴보세요.
- 최적값만 있으면 애플리케이션에 충분한가요?
호출자에 따라 다릅니다. 점수만 필요한 사용처도 있고 선택된 항목도 필요한 곳도 있습니다. 도우미가 숫자 하나로 기능이 완성된다고 가정하지 않도록 변경을 요청하기 전에 필요한 출력을 명시하세요.
- 값이 같은 해는 어떻게 처리하나요?
유효한 최적해라면 어느 것이든 괜찮은지, 결정적인 동률 처리 규칙이 필요한지 정의하세요. 선택 항목을 반환한다면 우연한 반복 순서에 의존하지 말고 동률을 명시적으로 테스트하고 규칙을 검토하세요.
- 예제로 대규모 해결 성능을 입증할 수 있나요?
아니요. 예제로 범위가 제한된 구현을 논의한 뒤 실제 프로젝트를 필요한 크기에서 평가하세요. 작은 정답 사례와 AI 설명만으로 다른 규모의 실행 시간이나 메모리 동작을 입증할 수는 없습니다.
PackSerein · 업데이트 2026-10-25