inflearn logo
강의

Khóa học

Chia sẻ kiến thức

Khóa học trọn gói luyện thi Coding Test 2026 [JAVA]

[Giải quyết bài toán] Leo cầu thang

Climbing Stairs 문제 basecase 생각하는 방법

25

dbwlsdlqh12

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

0

안녕하세요. DP Climbing Stairs 문제 풀이에서 질문이 있습니다.

 

basecase로 f(0)=1, f(1)=1 조건을 주셨는데요. f(1)=1, f(2)=2 로 해도 값이 동일하더라고요. 결국 초기값 2개만 지정하면 되는건가? 싶었습니다.

 

  1. 저는 계단을 1칸, 2칸을 갈 수 있는게 최소 케이스라고 생각하고, f(1), f(2)를 정의했는데 f(0) 부터 지정한 이유가 궁금합니다.

 

  1. 이 기준을 잡는 포인트는 어떻게 생각해낼 수 있을까요? 점화식이 f(n-1)+f(n-2) 이니 초기 0,1(혹은 1,2)번째 값을 알면 풀린다. 라고 접근하는 게 맞을까요?

java 코딩-테스트 알고리즘 data-structure

Câu trả lời 1

0

communityai8509

안녕하세요, 인프런 AI 인턴입니다. 송유진님 질문 주셔서 감사합니다.

Climbing Stairs 문제에서의 초기 조건(Base case) 설정에 대해 설명드리겠습니다. 이 문제는 계단을 오르는 데 필요한 방법의 수를 동적 계획법(DP)을 사용하여 계산하는 전형적인 문제입니다.

  1. f(0) 부터 시작한 이유:

    • f(0)=1로 두는 이유는, ‘시작점에서 아무런 움직임 없이 그 자리에 있을 때 방법의 수는 한 가지’라는 것을 의미합니다. 즉, 어떤 작업도 하지 않았을 때의 경우를 고려한 것입니다.
    • 문제의 정의 자체에서 시작점을 ‘계단을 오르지 않는 상태’로 본다면 f(0)=1이 타당할 수 있습니다. 프로그램적 측면이나 재귀적 정의로 봤을 때 시작점을 초기화하는 것이 코드 설계에 간편함을 제공하기도 합니다.
  2. 초기 조건을 결정하는 기준:

    • 점화식이 f(n) = f(n-1) + f(n-2)로 주어지는 경우, 최소 두 개의 값을 정의해야 합니다. 이는 점화식이 두 이전 값을 필요로 하기 때문입니다.
    • f(1), f(2)를 초기 조건으로 설정하면, 이후 문제를 해결하는 데 필요한 모든 중간 값을 계산할 수 있습니다.
    • 초기 조건 설정은 문제의 상태(여기서는 ‘계단을 오르는’ 문제)의 가장 기초적인 ‘가능한 동작(혹은 상태)‘를 기반으로 설정하는 것에서 시작합니다.
    • 따라서 이 기준은 선택의 문제라기보다는 문제 자체의 특성에 따라 결정됩니다. 가장 기본부터 문제를 확장하는 방향으로 초기 조건을 설정합니다.

이 접근 방법은 알고리즘 문제 해결 특히, DP 문제를 다루는 데 있어 매우 중요합니다. 초기값을 잘 설정하면 문제 해결이 자연스럽게 이어지기 때문에 몇 번의 예제를 통해 익숙해지는 것이 좋습니다.

유사한 질문과 답변을 참고하실 수 있는 링크도 있습니다:
- 동적계획법 초기값 설정 관련 토론

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

잠겨버린 사물함 시간초과 관련 질문입니다.

0

16

1

DFS/BFS

1

33

2

노션 링크 질문드립니다!

0

65

3

[문제풀이] network delay time

0

60

2

위상정렬 구현 관련

0

72

3

코딩테스트를 위한 JAVA 질문 있습니다!

0

85

1

점진적과부하 문제 - 시간 초과 오류

0

80

2

예제 2번 오류

0

77

2

part5 홍팀청팀 테스트케이스 오류

1

79

1

코테 사이트 네트워크 연결....

1

85

2

DP-다익스트라

0

72

2

코테 사이트 네트워크 연결 문제 확인 부탁드립니다.

2

87

2

코테 사이트에 접속이 안됩니다.

0

92

2

노션 링크가 어디있나요?

0

103

2

정답과 동일하게 작성 후 실행 또는 제출했음에도 시간초과

0

93

4

part6. 구름의 개수 풀이 시간초과 이유

0

79

2

DFS vs BFS 중 BFS 추천해주신 것 관련 질문

1

74

2

part5. 청팀홍팀 풀이 질문 드립니다.

0

85

3

추후 학습 계획 질문

0

80

1

자바 정렬

0

47

2

코테의 바이블(java) 와 해당 강의 차이

0

109

2

커리큘럼 관련 질문

0

72

1

queue에 값을 추가하는 메서드는 어떤 차이가 있나요?

0

81

1

부분집합 전역변수 질문

0

51

2