inhoj123   5년 전

다이나믹 프로그래밍 초짜입니다.

다이나믹 프로그래밍이 정확히 무엇인지와 몇가지 팁 정도만 알려주시면 감사하겠습니다.

그리고 이왕이면 아래 소스 문제좀...(메모리 초과/시간 초과이니 특히 프로그램 최적화 팁좀 알려주세요)

아니면 문제 접근 방식 지적도 좋습니다.

cpp05013   5년 전

[41][1000001]은 너무 큽니다. 이렇게나 많이 쓸 필요가 없습니다. 왜 41이고 1000001인지, 어떻게 접근하셨는지 설명해 주세요.

inhoj123   5년 전

저도 그렇게 생각합니다만...(메모리 초과)

1000000이라는 숫자는 최대로 나올 수 있는 비용의 양입니다.

cal[집 수][최대 비용 수 or 집*1000(집 하나당 최대로 나올 수 있는 비용)] 에서

만약 cal[21][8324].tf==1 이면 21번째 집에서 8324원이 나올 수 있다는 뜻이고, cal[21][8324].tf==0 이면 그 반대입니다.

koi/2017/초등부 3번 문제 답안을 참고해서 풀었는데 메모리가 생각보다 (상상을 초월) 많이 나오더라구요..

이런 문제는 어떻게 접근해야 하죠?(설명이 부실한 점 죄송합니다)

moonhi123   5년 전

안냐세요!

일단 다이나믹 프로그래밍은 큰 문제를 작은 문제로 나눠서 풀고, 중복을 제거(메모이제이션)하여 일반 제귀보다 훨씬 빠르게 됩니다.

소스는 설명이 안달려있어 자세히는 모르겠습니다만은, 초짜라면 님이 푼 소스같이 BOTTOM - UP방식(대체로 for문) 보다는 제귀함수 + 메모제이션을 이용한 TOP-DOWN방식이

훨씬 쉽습니다.

http://coding-all.tistory.com/...

저희 블로그인데 참고하시면 좋을 것 같습니다.

P.S 보아하니 KOI 초등부 나가시는 것 같은데(중학생이시면 죄송...) 저도 KOI 초등부 나갑니다!

댓글을 작성하려면 로그인해야 합니다.