전체 방문자
오늘
어제
모달조아
Better than yesterday
모달조아
  • 분류 전체보기 (147)
    • PS (86)
      • BOJ (79)
      • 프로그래머스 (6)
    • 이론 (41)
      • 자료구조 (2)
      • 알고리즘 (8)
      • 데이터베이스 (1)
      • 운영체제 (1)
      • 네트워크 (3)
      • 디자인패턴 (7)
      • Java (13)
      • Spring (4)
      • JPA (1)
      • Git (1)
    • 개발 (18)
    • 프로젝트 (1)
    • 기록 (0)
      • 후기 (0)
    • etc (1)

최근 글

티스토리

hELLO · Designed By 정상우.
모달조아
PS/BOJ

BOJ 2225 합분해

BOJ 2225 합분해
PS/BOJ

BOJ 2225 합분해

2021. 7. 9. 04:14

boj 2225 합분해

- 문제 링크

https://www.acmicpc.net/problem/2225

- 문제 해설

테이블 D[i][j]를 n이 i이고 k가 j일 때의 경우의 수라고 정의한다.
경우의 수를 어떻게 나눌지 잘 떠오르지 않아서 일단 n과 k에 따른 경우의 수를 작은 수부터 나열해보았다.

표로 나열해보면서 점화식을 유추해보자. 예를 들어 D[3][3]을 구한다고 해보자. 3을 3가지 수의 합으로 나타내는 경우는 0부터 3까지의 수를 2가지 수의 합으로 나타낸 것에다가 3이 되기위해 필요한 수를 더하면 된다.

  • 0을 2가지 수의 합으로 나타낸 경우 : (0 + 0)
  • 1을 2가지 수의 합으로 나타낸 경우 : (0 + 1), (1 + 0)
  • 2를 2가지 수의 합으로 나타낸 경우 : (0 + 2), (1 + 1), (2 + 0)
  • 3을 2가지 수의 합으로 나타낸 경우 : (0 + 3), (1 + 2), (2 + 1), (3 + 0)
  • 3을 3가지 수의 합으로 나타낸 경우
    : 3을 3가지 수의 합으로 나타낸 경우는 위의 경우에서 3이 되기 위해 필요한 수를 동일한 위치에 더해주면 된다.
    3 + (0 + 0), 2 + (0 + 1), 2 + (1 + 0), 1 + (0 + 2), 1 + (1 + 1), 1 + (2 + 0), 0 + (0 + 3), 0 + (1 + 2), 0 + (2 + 1), 0 + (3 + 0)

그러므로, D[i][j] = D[0][j-1] + D[1][j-1] + ... + D{i-1][j-1] + D[i][j-1] 꼴인 것을 알 수 있다.
여기서 같은 방식으로 D[0][j-1] + D[1][j-1] + ... + D{i-1][j-1] = D[i-1][j] 이다.

그러므로, 점화식은 D[i][j] = D[i-1][j] + D[i][j-1] 이다.

- 코드 보기

#include <iostream>
#define mod 1000000000
using namespace std;
int n;
int k;
int D[205][205];
int main(void)
{
ios_base::sync_with_stdio(0);
cin.tie(0);
cin >> n >> k;
for (int i = 1; i <= k; i++) D[0][i] = 1;
for (int i = 1; i <= n; i++)
{
for (int j = 1; j <= k; j++)
{
D[i][j] = (D[i - 1][j] + D[i][j - 1]) % mod;
}
}
cout << D[n][k];
}
저작자표시 (새창열림)

'PS > BOJ' 카테고리의 다른 글

BOJ 11052 카드 구매하기  (0) 2021.07.12
BOJ 2011 암호코드  (0) 2021.07.12
BOJ 9461 파도반 수열  (0) 2021.07.09
BOJ 2133 타일 채우기  (0) 2021.07.08
BOJ 1699 제곱수의 합  (0) 2021.07.08
  • boj 2225 합분해
'PS/BOJ' 카테고리의 다른 글
  • BOJ 11052 카드 구매하기
  • BOJ 2011 암호코드
  • BOJ 9461 파도반 수열
  • BOJ 2133 타일 채우기
모달조아
모달조아

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.