인프런 커뮤니티 질문&답변
Climbing Stairs 문제 basecase 생각하는 방법
작성
·
9
·
수정됨
0
안녕하세요. DP Climbing Stairs 문제 풀이에서 질문이 있습니다.
basecase로 f(0)=1, f(1)=1 조건을 주셨는데요. f(1)=1, f(2)=2 로 해도 값이 동일하더라고요. 결국 초기값 2개만 지정하면 되는건가? 싶었습니다.
저는 계단을 1칸, 2칸을 갈 수 있는게 최소 케이스라고 생각하고, f(1), f(2)를 정의했는데 f(0) 부터 지정한 이유가 궁금합니다.
이 기준을 잡는 포인트는 어떻게 생각해낼 수 있을까요? 점화식이 f(n-1)+f(n-2) 이니 초기 0,1(혹은 1,2)번째 값을 알면 풀린다. 라고 접근하는 게 맞을까요?
답변 1
0
안녕하세요, 인프런 AI 인턴입니다. 송유진님 질문 주셔서 감사합니다.
Climbing Stairs 문제에서의 초기 조건(Base case) 설정에 대해 설명드리겠습니다. 이 문제는 계단을 오르는 데 필요한 방법의 수를 동적 계획법(DP)을 사용하여 계산하는 전형적인 문제입니다.
f(0) 부터 시작한 이유:
- f(0)=1로 두는 이유는, ‘시작점에서 아무런 움직임 없이 그 자리에 있을 때 방법의 수는 한 가지’라는 것을 의미합니다. 즉, 어떤 작업도 하지 않았을 때의 경우를 고려한 것입니다.
- 문제의 정의 자체에서 시작점을 ‘계단을 오르지 않는 상태’로 본다면 f(0)=1이 타당할 수 있습니다. 프로그램적 측면이나 재귀적 정의로 봤을 때 시작점을 초기화하는 것이 코드 설계에 간편함을 제공하기도 합니다.
- f(0)=1로 두는 이유는, ‘시작점에서 아무런 움직임 없이 그 자리에 있을 때 방법의 수는 한 가지’라는 것을 의미합니다. 즉, 어떤 작업도 하지 않았을 때의 경우를 고려한 것입니다.
초기 조건을 결정하는 기준:
- 점화식이 f(n) = f(n-1) + f(n-2)로 주어지는 경우, 최소 두 개의 값을 정의해야 합니다. 이는 점화식이 두 이전 값을 필요로 하기 때문입니다.
- f(1), f(2)를 초기 조건으로 설정하면, 이후 문제를 해결하는 데 필요한 모든 중간 값을 계산할 수 있습니다.
- 초기 조건 설정은 문제의 상태(여기서는 ‘계단을 오르는’ 문제)의 가장 기초적인 ‘가능한 동작(혹은 상태)‘를 기반으로 설정하는 것에서 시작합니다.
- 따라서 이 기준은 선택의 문제라기보다는 문제 자체의 특성에 따라 결정됩니다. 가장 기본부터 문제를 확장하는 방향으로 초기 조건을 설정합니다.
- 점화식이 f(n) = f(n-1) + f(n-2)로 주어지는 경우, 최소 두 개의 값을 정의해야 합니다. 이는 점화식이 두 이전 값을 필요로 하기 때문입니다.
이 접근 방법은 알고리즘 문제 해결 특히, DP 문제를 다루는 데 있어 매우 중요합니다. 초기값을 잘 설정하면 문제 해결이 자연스럽게 이어지기 때문에 몇 번의 예제를 통해 익숙해지는 것이 좋습니다.
유사한 질문과 답변을 참고하실 수 있는 링크도 있습니다:
- 동적계획법 초기값 설정 관련 토론
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.




