본문 바로가기

기타

백준 2698번 인접한 비트의 개수(동적계획법)

Dynamic Programming (동적계획법) -> n-1을 생각하라 (점화식)


다음과 같이 변수를 정의할 때

n 총개수

k 인접개수

p 마지막 숫자



다음과 같이 n= 1~4의 예시를 들어보고 규칙을 찾는다.

n       [n][k][p]


n = 1

0 100

1 101


n = 2


00 200

01 201

10 200

11 211


n=3


000 300

001 301

010 300

011 311

100 300

101 301

110 310

111 321


n=4


0000 400

0001 401

0010 400

0011 411

0100 400

0101 401

0110 410

0111 421

1000 400

1001 401

1010 400

1011 411

1100 410

1101 411

1110 420

1111 431



다음과 같은 점화식을 유추하는 것이 가능하다.

[n][k][0] = [n-1][k][1] + [n-1][k][0]

[n][k][1] = [n-1][k][0] + [n-1][k-1][1]