2167번: 2차원 배열의 합
https://www.acmicpc.net/problem/2167 2167번: 2차원 배열의 합 첫째 줄에 배열의 크기 N, M(1 ≤ N, M ≤ 300)이 주어진다. 다음 N개의 줄에는 M개의 정수로 배열이 주어진다. 배열에 포함되어 있는 수는 절댓값이 10,000보다 작거나 같은 정수이다. 그 다음 줄에는 합을 구할 부분의 개수 K(1 ≤ K ≤ 10,000)가 주어진다. 다음 K개의 줄에는 네 개의 정수로 i, j, x, y가 주어진다(i ≤ x, j ≤ y). www.acmicpc.net 다이나믹 프로그래밍 문제인데, 점화식의 정의를 어떻게 하는가가 중요한 문제이다. 점화식은 어떤 n에 대해서도 해당하기 때문에, 1부터 원하는 n까지 구할 수 있다. dp[301][301]을 선언하고, dp[i]..
[BOJ 1649] 택시(C++)
https://www.acmicpc.net/problem/1649 1649번: 택시 첫 번째 줄에 교차로의 개수인 N(1 if(cnt[next] == cnt[curr])은 현재 curr 교차로에서 방문된 C1 ~ Ck의 값이, next 교차로에서 방문된 C1 ~ Ck의 값과 같다면, 경로의 수를 더할 수 있다는 것을 의미한다. 여기서 가질 수 있는 의문 점은, 'cnt[next]와 cnt[curr]의 값이 같다는 게 방문한 C1 ~ Ck의 노드도 같다고 할 수 있을까?'라는 의문이 생길 수 있다. cnt[next] = 3, cnt[curr] = 3이라고 생각해보자! next > C1, C2, C3 curr > C1, C2, C4 C1, C2, C4 순서로 방문하는 것이 불가능하다면 이유는, C1 -> C..