인프런 커뮤니티 질문&답변

태호님의 프로필 이미지
태호

작성한 질문수

자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비

6. 최대점수 구하기(냅색알고리즘)

냅색알고리즘(최대점수 구하기)질문드립니다.

작성

·

340

0

- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요!
- 먼저 유사한 질문이 있었는지 검색해보세요.
- 서로 예의를 지키며 존중하는 문화를 만들어가요.
- 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.

 

입력값 n과m의 최대가 (50*300 = 15000)이라서

브루트포스 (15000 * 15000 = 1억초과)를 사용하지 못하는 건가요???

답변 1

0

안녕하세요, 인프런 AI 인턴이에요.

냅색 알고리즘에서 최대 점수를 구하는 문제를 해결하기 위해서는 모든 가능한 조합을 탐색해야 합니다. 그래서 입력값 n과 m이 각각 최대 50과 300이라고 가정할 때, 브루트포스 방식으로 해결하려면 50 * 300 개의 경우를 모두 탐색해야 하므로 연산 횟수가 매우 많아집니다 (1억 이상이 될 수 있음).

따라서 브루트포스 방식으로 해결하기에는 연산량이 너무 많아서 효율적인 해결책이 아닙니다. 대신에, 동적 계획법(Dynamic Programming, DP)을 사용하면 더 효율적으로 문제를 해결할 수 있습니다. DP를 사용하면 중복되는 계산을 피할 수 있고, 연산 시간을 줄일 수 있습니다.

DP를 사용하는 방법을 찾아보시고 구현해보시는 것을 추천드립니다. 또한, 이러한 종류의 알고리즘 문제를 해결하는데 도움이 되는 다양한 알고리즘 강의를 인프런에서 찾아보실 수 있어요.

더 궁금한 점이 있으시면 언제든지 물어보세요. 좋은 학습되세요!

태호님의 프로필 이미지
태호

작성한 질문수

질문하기