inflearn logo
강의

Khóa học

Chia sẻ kiến thức

Hoàn thành C++ Coding Test trong 10 tuần | Thuật toán Coding Test

Khái niệm tuần 7 DP (Dynamic Programming)

DP 경우의 수 설명이 이해가 되지 않습니다.

4

sainthan

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

0

경우의 수에 대해서 설명하는데 있어 반복해서 들어도 이해가 되지 않아 문의드립니다.

4라는 숫자를 만드는데 DP[4]로 설정하시면서 DP[N]은 해당 N을 만들 수 있는 경우의 수라고 하셨습니다.

처음에 DP[0]이면 0을 만들 수 있는 방법이라고 하셨을 때 1로만 한다면 아무것도 안 더하면 1개의 경우가 생깁니다. 그러면 2로 한다고 했을 때도 아무것도 안 더해서 1가지 경우가 추가가 되니 2가 되는게 아닌가요?

또한, 2를 통하여 1을 만드는 방법은 없으니 이전의 방법이 그대로 오고 2를 만드는 경우는 이전에 1을 통하여 1개가 있으니 2만 더하여 있는 경우 1개를 더하여 2가지인건 알겠는데 3의 경우 2+1 이 어디서 나온건지 모르겠습니다.

질문이 너무 복잡해 보인점 양해부탁드립니다. 정말로 이해가 안되서 그렇습니다...

c++ 코딩-테스트

Câu trả lời 1

0

communityai8509

안녕하세요, 인프런 AI 인턴입니다. 한성현님.

동적 프로그래밍(DP)은 큰 문제를 작은 문제로 나누어 해결하는 데 효과적입니다. DP 배열에서 dp[n]은 숫자 n을 만들 수 있는 경우의 수를 의미합니다. dp배열의 각 인덱스는 특정 숫자를 만들 수 있는 독특한 경로들과 방법들의 수를 저장하고 있습니다.

질문하신 부분들을 하나씩 풀어보겠습니다:

1. dp[0]

dp[0]은 숫자 0을 만들 수 있는 방법의 수입니다. 흔히 dp[0] 을 1로 초기화하는데, 이는 0을 “아무것도 하지 않는” 방법으로 만들 수 있다는 것을 의미합니다.

2. 숫자 2를 만드는 경우

숫자 2를 만드는 경우의 수는 직접적으로 1을 두 번 더하거나, 2 하나를 직접 사용하여 얻을 수 있습니다.

  • 2 = 1 + 1 : dp[1] 의 경우의 수(1) 만큼 경우가 있습니다.
  • 2 = 2 : 즉, 2만 있습니다. 따라서 dp[2]에 1을 더해줍니다.

이를 통해 숫자 2를 만들 수 있는 경우의 수는 2가 됩니다.

3. 숫자 3을 만드는 방법

숫자 3을 얻기 위해 1, 2, 그리고 3의 조합을 사용할 수 있습니다:

  • 3 = 1 + 1 + 1 : dp[2]의 경우의 수입니다.
  • 3 = 1 + 2 : dp[1]을 참조합니다.
  • 3 = 3 : 직접 3을 사용하는 방법입니다.

각각의 접근 방식에서 이미 계산된 하위 문제(dp[1], dp[2])의 결과를 사용하여 전체 경우의 수를 구성합니다. 이 과정에서 조합 가능한 모든 경우의 수가 누적되어 최종 경우의 수를 산출하게 됩니다.

아래 있는 다른 질문과 답변을 통해 더욱 자세히 이해해 보실 수 있습니다:

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

3-F 채점 관련 질문

0

14

1

BFS, DFS 활용이 되는 상황에서의 방향성

0

19

2

코딩살구클럽 승인

0

23

2

코딩살구클럽승인

0

21

3

코딩살구클럽 승인

0

43

2

3-D 관련 질문

0

33

2

코살구 회원가입 문의

0

40

2

코살구 로그인 문제

0

60

2

3-A 문제 풀이 관련 질문

0

51

3

2-O 질문 있습니다

0

38

2

2-T 문제에 관한 질문

0

39

2

코딩 살구 클럽 접속 및 사용방법 문의

0

58

2

안녕하세요~. 현재 코살코딩클럽 사이트가 접속이 안됩니다~

0

64

2

코딩살구클럽 로그인문제

0

74

3

코딩 살구 클럽 로그인 문제

0

79

2

2-J 채점관련 질문

0

65

3

코딩 살구 클럽 Python 지원 가능 여부

0

77

1

살구클럽 아이디 없음 문제

0

76

1

1-O 코딩살구클럽 채점관련 질문

0

60

2

히든 테스트 케이스가 사라졌습니다

0

57

1

채점서버 혹시 다른 언어 지원도 가능하게 해주실 수 있나요

1

74

2

살구 클럽 채점 관련 문의(테스트 케이스)

0

66

2

1-H 문제 채점하기 오류

0

58

3

코딩살구클럽 2주차 2-L 문제 채점하기 오류

0

52

2