조합 예제 - 3
문제 분석
"a층의 b호에 살려면 자신의 아래층(a - 1층)의 1호부터 b호까지 사람들의 수의 합만큼 사람들을 데려와 살아야 한다."라는 내용을 식으로 하면 다음처럼 된다.
D[a][b]=D[a-1][0]+ ... +D[a-1][b-1]+D[a-1][b]위 식을 응용하면 점화식을 변경할 수 있다.
a층 b호는 a층 b-1호의 값에서 자기 아래층(a - 1층 b호)의 사람 수만 더하면 된다는 것을 알 수 있다.
이 내용을 적용해 일반화된 점화식을 다음과 같이 도출할 수 있다.
D[a][b]=D[a][b-1]+D[a-1][b]층의 수가 매우 적은 편이므로 모든 층수에 관해 구해 놓고 테스트 케이스를 구할 수 있다.
손으로 풀어보기
DP 배열을 초기화한다.
DP 테이블 초기화
DP[i][1]= 1 : 1호에는 항상 1명DP[0][i]= i : 0층 i호에는 i명이 산다.
DP 배열을 점화식을 활용해 채운다.
점화식
D[i][j]=D[i][j - 1]+D[i - 1][j]
질의와 관련된 D[k][n]을 출력한다.
슈도코드
코드 구현 - 파이썬
코드 구현 - 자바
Last updated