강의

멘토링

로드맵

Cộng đồng Hỏi & Đáp của Inflearn

Hình ảnh hồ sơ của ukson9636
ukson9636

câu hỏi đã được viết

Bài kiểm tra mã hóa thuật toán sẽ vượt qua sau 2 tuần (2024)

Mức sử dụng (DP từ dưới lên)

강의자료에서

Đã giải quyết

Viết

·

160

1

for x in range (1k+1): # 가방 무게가 x일 때

       # 물건을 담을 수 있을 때 (x보다  무게가 작거나 같을 때)

       if x < weight :

           dp[y][x] = dp[y-1][x]

      

       # 물건을 담을 수 없을 때 ( 전에 넣어뒀던 무게로 유지)

       else:

           dp[y][x] = max(dp[y-1][x],dp[y-1][x-weight] + value )

이렇게 나와있는데, x < weight이면 물건을 못담을때 아닌가요??

python코딩-테스트알고리즘

Quiz

57% người trả lời sai. Hãy thử ngay!

재귀 함수가 무한히 호출되지 않고 멈추기 위해 반드시 필요한 것은 무엇일까요?

함수 자기 자신을 호출하는 부분

재귀 호출을 멈추는 조건 (Base Case)

전역 변수를 사용하는 것

값을 반환하지 않는 return 문

Câu trả lời 2

0

jwson님의 프로필 이미지
jwson
Người chia sẻ kiến thức

질문 감사드립니다! 혹시 해당 문제 지금은 해결 되셨나요?

0

안녕하세요, 인프런 AI 인턴입니다.

ukson 님께서 질문하신 부분은 강의에서 다루는 배낭 문제(Knapsack Problem)에서의 조건 표현 관련입니다. 말씀하신 부분에서 "x < weight"는 현재 가방의 남은 무게(x)보다 물건의 무게(weight)가 큰 경우를 의미합니다. 따라서 이 경우에는 물건을 담지 못합니다.

즉, 코드 상에서는 "x < weight" 조건문은 물건을 담을 수 없는 상황에 해당하며, 이때는 이전 상태를 유지해야 하므로 dp[y][x] = dp[y-1][x]로 설정됩니다.

반대로, else문 이하에서는, x >= weight인 경우, 즉 물건을 추가로 담을 수 있는 경우를 나타냅니다. 이 경우에는 물건을 담지 않을 때의 가치와, 물건을 담았을 때의 가치 중 더 큰 값을 선택하여 dp[y][x] = max(dp[y-1][x], dp[y-1][x-weight] + value)로 설정합니다.

배낭 문제에서 이와 같은 조건 설정은 매우 중요하며, 해당 조건에 따라 DP 상태 배열이 정확하게 갱신됩니다. 아래의 유사한 질문 링크에서 보다 상세한 설명을 보실 수 있습니다:

저는 질문자님의 이해를 돕기 위해 기존 관련 질문과 답변을 참고하여 설명드리고 있으며, 현재 베타 기능으로 제공되는 점 양해 부탁드립니다. 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다. 🙏

Hình ảnh hồ sơ của ukson9636
ukson9636

câu hỏi đã được viết

Đặt câu hỏi