[boj] (s1) 1932 정수 삼각형

강신현·2022년 4월 21일
0

✅ DP

문제

링크

1. 문제 접근 및 해결 로직

대각선 왼쪽 또는 대각선 오른쪽으로만 이동할 수 있으므로 각 경우를 나눠 세어준다.
하지만 입력을 정삼각형 모양이 아니라 직각삼각형 모양으로 받으므로
대각선 왼쪽으로 이동하는 경우는 아래로 한칸 이동하는 것과 같고
대각선 오른쪽으로 이동하는 경우는 아래로 한칸 -> 오른쪽으로 한칸 이동하는 것과 같다.

바로 이전 위치에 따라 현재 위치가 결정되므로 이전 위치가 될 수 있는 두가지 경우 중에 이동 경로에 있는 수의 합이 최대가 되는 경우를 선택한다.

  • 정의
    f(i,j)f(i,j) : i,ji,j까지 왔을 때, 합이 최대가 되는 경로에 있는 수의 합
  • 구하는 답
    f(n,n)f(n,n)
  • 초기값
    f(1,1)=num[1][1]f(1,1)=num[1][1]
  • 점화식
    f(i,j)=max(f(i1,j),f(i1,j1))+num[i][j]f(i,j)=max(f(i-1,j),f(i-1,j-1))+num[i][j]

2. 코드

3. 시간 복잡도 분석

경우의 수를 모두 구하므로
O(N)O(N)

4. 문제에서 중요한 부분

DP문제는 점화식을 도출하는 것이 중요하다.
Bottm Up(반복문)으로 풀지 Top Down(재귀)으로 풀지는 선택사항

profile
땅콩의 모험 (server)

0개의 댓글

관련 채용 정보