이차원배열2 [Swift][DP] 백준 1932번 (정수삼각형) 요구능력 : DP에 대한 이해 코드설명 : 문제를 읽고 우선적으로 생각해볼 수 있는건 dp[i]를 구하려면 이전에 어떤 값을 골랐는지가 중요하다는것이다. 삼각형에서 한줄을 i줄이라고 한다면 몇번째 수를 선택했는지가 중요한것이다. 이것을 보고 dp는 2차원 배열로 이루어지겠구나를 생각했다. 조건은 왼쪽대각선 혹은 오른쪽대각선으로만 선택할 수 있는것이다. 문제의 예제를 보고 8, 1, 0이 있는 줄을 dp[i]라고 생각해보면 이전 줄에 3, 8이 있다. 우선 8을 선택했을 때의 최대값을 구하기 위해서는 3에서 내려오는 방법밖에는 없다. 왼쪽 대각선으로 내려오는 것 밖에 없는것이다. 다음으로 1을 생각해보자. dp[i][1]을 구하는것인데 1은 왼쪽대각선과 오른쪽대각선 2가지가 모두에서 내려올 수 있다. 다.. 2021. 11. 9. [Swift][DP] 백준 1303번 (동물원) 요구능력 : DP에 대한 이해 코드설명 : 2xn의 사각형이 있을때, 사자가 가로, 세로방향으로 있으면 안된다. 사자가 있을 수 있는 경우의수는 왼쪽, 오른쪽, 그리고 아예없을 경우이다. 이 문제는 사자를 배치하는 모든 경우의수를 구하는 문제이다. 점화식을 만들어보자. dp[i]를 구하려는데 i번째 배열에는 사자가 없을 수도 있다. 사자가 없는경우에는 이전 인덱스인 i - 1에서는 왼쪽에 사자가 있을 수도 있고 오른쪽에 사자가 없을 수도 있고 사자가 아예 없을 수도 있다. 이 문제는 사자를 배치할 수 있는 모든 경우의수를 구하는 것이므로, 조건별로 경우의수를 다 구해준다. 각각 다른 조건을 만족하는 경우의수들을 구하기 위해서는 dp를 2차원 배열로 사용해야한다. dp[i][0] = (dp[i - 1][1.. 2021. 11. 4. 이전 1 다음