목록프로그래머스/DP (3)
Study hard

programmers.co.kr/learn/courses/30/lessons/42897 코딩테스트 연습 - 도둑질 도둑이 어느 마을을 털 계획을 하고 있습니다. 이 마을의 모든 집들은 아래 그림과 같이 동그랗게 배치되어 있습니다. 각 집들은 서로 인접한 집들과 방범장치가 연결되어 있기 때문에 인접한 �� programmers.co.kr [풀이] DP로 풀어야 하는 문제였다. 첫번째 집과 마지막 집이 같이 선택되면 안되므로 첫번째 집을 선택하지 않는 경우와 첫번째 집을 선택하는 경우로 나누어서 풀어야한다. #include #include #include //max using namespace std; int *dp; int house_cnt; int DP(vectormoney) { dp[0] = money..

programmers.co.kr/learn/courses/30/lessons/42898 코딩테스트 연습 - 등굣길 계속되는 폭우로 일부 지역이 물에 잠겼습니다. 물에 잠기지 않은 지역을 통해 학교를 가려고 합니다. 집에서 학교까지 가는 길은 m x n 크기의 격자모양으로 나타낼 수 있습니다. 아래 그림은 m = programmers.co.kr [풀이] 오른쪽과 아래로만 움직이면 갈 수 있는 지도의 면적이 작게 쪼개지므로 DP를 사용해 풀 수 있다. 점화식 DP[i][j] : (i,j)좌표로 가는 최단 경로의 수 DP[i][j] = DP[i-1][j] + DP[i][j-1] #include #include using namespace std; const int D = 1000000007; int dp[10..

programmers.co.kr/learn/courses/30/lessons/43105 코딩테스트 연습 - 정수 삼각형 [[7], [3, 8], [8, 1, 0], [2, 7, 4, 4], [4, 5, 2, 6, 5]] 30 programmers.co.kr [풀이] 정확성과 효율성을 둘 다 보는 문제여서 DP를 이용해 풀었다. 바닥부터 꼭대기까지 각 숫자를 선택했을 때 그 숫자 밑으로 얻을 수 있는 최댓값을 저장하면서 올라갔다. dp[0][0]에는 거쳐간 숫자의 최댓값이 저장된다. #include #include using namespace std; int **dp; int Level; int dp_size; void DP(vectortriangle) { for (int i = 0; i < Level; ..