PSNote/Problem Solving

[BOJ-1932]숫자삼각형

WONDY 2017. 7. 17. 02:38

음.... DP 문제였다.


삼각형 맨 윗부분에서 시작해서 맨 아래 부분까지 도달할 때 각 인자끼리 더한 값이 제일 큰 값을 구하는 것이었다.


   1

  2 3

 4 5 6


인 모양으로 있다면 


2, 3은 1에서 값을 받을 수 있고, 인접한 곳에서 값을 얻어 올 수 있다. 

그러면 5의 경우에는 2, 3 에서 값을 얻어올 수 있는 경우가 된다 


     1

    2 3

   4 5 6

  7 8 9 10


인 경우에 8은 4 5 / 9는 5 6 에서 값을 얻어 올 수 있게 된다. 

각 양끝에서는 값이 내려오는 곳은 7<-4 / 10<-6 내려 올 수 있고 양 끝 값이 아닌 안쪽에 있는 값은 2가지 경우에서 값을 가져 올 수 있게 된다.


값을 내려 받을 때 그 중 최대 값만 얻어오면 된다. 


f(r%2Cc)%3Df(r%2Cc)%2BM(f(r-1%2Cc-1)%2Cf(r-1%2Cc))%20 

위 식이 만들어졌고 이에 따라 코드를 작성하였다. (M(a,b)은 둘(a,b) 중 최대값)