강의

멘토링

로드맵

Inflearn brand logo image

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

이지민님의 프로필 이미지
이지민

작성한 질문수

그림으로 쉽게 배우는 자료구조와 알고리즘 (기본편)

동적 프로그래밍 - 타뷸레이션

메모이제이션과 타뷸레이션 관련해서 질문드립니다.

작성

·

98

·

수정됨

1

안녕하세요. 감자님.

동적 프로그래밍 관련하여 질문이 있어 글을 남기게 되었습니다.

메모이제이션의 경우 함수의 콜스택뿐 아니라 메모를 위한 추가 메모리 공간이 더 필요하고 타뷸레이션의 경우 값을 저장할 테이블을 위한 메모리 공간만 필요한 걸로 알고 있습니다.

콜스택과 메모 공간 모두 필요로 하는 메모이제이션보다 테이블 공간만 필요로 하는 타뷸레이션이 좀 더 이점이 있을 것이라고 생각합니다.

하지만 메모이제이션의 경우 그러한 단점들을 가지고 있더라도 재귀적으로 어려운 문제를 쉽게 해결할 수 있다는 큰 장점이 있기 때문에 2개의 기법 간에 우열이 있는 것이 아니라 문제 해결에 가장 적합한 방법을 사용하는것이 효율적인가요?

답변 2

0

감자님의 프로필 이미지
감자
지식공유자

안녕하세요 이지민님!

메모이제이션과 타뷸레이션의 장단점을 잘 알고계신 것 같습니다.

만약 어떤 문제를 타뷸레이션으로 해결할 수 있다면 성능면에서 더 좋기때문에 타뷸레이션을 선택하는 것이 좋을겁니다.

다만 타뷸레이션으로 해결하기 어려운 구조라면 메모이제이션으로 해결하는 게 더 좋을겁니다.

어떤 문제를 해결하려고 할 때 재귀적 사고가 더 편하고 메모리 여유가 있다면 메모이제이션을 선택하는게 좋을겁니다.

다만 메모리를 많이 아껴야하는 상황이라면 어렵지만 타뷸레이션으로 바꾸는 노력을 해야 할 수 있습니다.

이 부분은 말씀주신 것처럼 우열이라기보다는 현재 상황에 맞게 판단해서 적절하게 선택하는 것이 개발자의 역량이라고 생각합니다.

궁금증이 해결되셨나요?😃

이지민님의 프로필 이미지
이지민
질문자

답변 감사합니다!

0

안녕하세요, 인프런 AI 인턴입니다. 이지민님, 동적 프로그래밍의 메모이제이션과 타뷸레이션에 대해 질문 주셨네요.

메모이제이션과 타뷸레이션은 각각의 장단점이 있어 특정 문제에 따라 적합한 방법을 선택하는 것이 중요합니다.

  • 메모이제이션: 재귀적인 접근을 통해 해결하는 방법으로, 이미 계산된 값을 저장해두고 반복해서 사용하는 방식입니다. 재귀 호출이 많아져 콜스택이 커질 수 있으나, 복잡한 문제를 손쉽게 풀 수 있는 이점이 있습니다.

  • 타뷸레이션: 반복문을 통해 문제를 아래에서 위로 풀어가는 접근법으로, 데이터 테이블을 사용하여 문제를 해결합니다. 이 방법은 재귀 호출을 사용하지 않고 테이블을 사용해 최적화된 메모리 사용이 가능하며, 일반적으로 더 효율적인 경우가 많습니다.

결론적으로, 문제의 성격에 따라 두 기법 중 더 적합한 것을 선택하는 것이 중요합니다. 재귀적 사고가 더 자연스럽고 이해가 쉬울 때 메모이제이션을, 메모리 사용을 줄이고 효율성을 높이고 싶을 때는 타뷸레이션을 사용하는 것이 일반적입니다.

추가적으로, 질문하신 내용과 관련한 유사한 기존 답변을 참고하시기 바랍니다. 동적 프로그래밍 메모리 낭비에서 관련된 내용에 대한 다른 질문과 답변을 확인하실 수 있습니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

이지민님의 프로필 이미지
이지민

작성한 질문수

질문하기