코딩 공부 연습

백준 4883 삼각 그래프

miffy짱 2023. 2. 20. 15:54
반응형

백준 4883 삼각 그래프


오늘은 삼각 그래프 문제를 풀었다.

DP 를 이용하면 풀 수 있겠다는 감이 바로 왔는데, 그래프를 내가 제대로 봤으면 쉽게 해결했을 것 같은데 그러지 않아서 오래 걸렸다. 또 신경 써야하는 문제점도 있었기 때문에 여러번 틀리고 나서야 답을 구할 수 있었다.


  • 먼저, 그래프의 화살표가 어디로 향하는지 잘 봐야한다.
  • 그 다음, 왼쪽 제일 위의 값을 신경을 써줘야 한다.
for (int i = 1; i<n; i++)
        {
            vector<int> v1;

            dp[i][0] = min(dp[i-1][0], dp[i-1][1]) + table[i][0];
            dp[i][1] = min(dp[i-1][0], min(min(dp[i-1][1],dp[i-1][2]), dp[i][0])) + table[i][1];
            dp[i][2] = min(min(dp[i-1][1], dp[i-1][2]), dp[i][1]) + table[i][2];

        }

이렇게, 각 칸에 도달하는 화살표들은 전부다 Min 연산으로 값을 비교해 주어야 한다.


그리고,

dp[0][0] = 999999999;


이렇게 최대값으로 설정 안 해 두면 참조 하면 안되는데도 참조하기 때문에 문제가 발생한다!!!