문제 https://programmers.co.kr/learn/courses/30/lessons/12913 코딩테스트 연습 - 땅따먹기 땅따먹기 게임을 하려고 합니다. 땅따먹기 게임의 땅(land)은 총 N행 4열로 이루어져 있고, 모든 칸에는 점수가 쓰여 있습니다. 1행부터 땅을 밟으며 한 행씩 내려올 때, 각 행의 4칸 중 한 칸만 밟 programmers.co.kr 풀이 2차원 DP로 문제를 해결할 수 있었다. DP[i][j]를 좌표 (i, j)까지 도달하여 얻을 수 있는 가장 큰 점수라고 가정했을 때 이전 행에서와 같은 열을 지나오지 못하므로 j의 값에 따른 4개의 분기를 처리해주었다. 일단 DP 테이블을 채우기위해서 0번째 행의 초기값을 세팅해주었고 1행부터는 이전 행에서 현재의 j 값과 다른 ..
문제 https://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[i][j]가 i,j의 좌표가 가질 수 있는 거쳐간 숫자의 최댓값이라고 가정했을 때 이 문제는 점화식은 3개로 나뉘는데 i) 삼각형의 왼쪽 끝일 때 - dp[i][j] = dp[i - 1][j] + triangle[i][j] ii) 삼각형의 오른쪽 끝일 때 - dp[i][j] = dp[i - 1][j - 1] + triangle[i][j]; ii) 삼각형의 왼쪽 끝, 오른쪽 끝이 모두 아닐 ..
문제 https://programmers.co.kr/learn/courses/30/lessons/12914 코딩테스트 연습 - 멀리 뛰기 효진이는 멀리 뛰기를 연습하고 있습니다. 효진이는 한번에 1칸, 또는 2칸을 뛸 수 있습니다. 칸이 총 4개 있을 때, 효진이는 (1칸, 1칸, 1칸, 1칸) (1칸, 2칸, 1칸) (1칸, 1칸, 2칸) (2칸, 1칸, 1칸) (2칸, 2 programmers.co.kr 풀이 DP로 해결할 수 있었다. 이 문제도 2 x n 타일링처럼 점화식만 구해주면 레벨3 치고는 그렇게 어렵지 않다. DP[N]이 N칸을 뛰어야 할 때 나올 수 있는 경우의 수라고 가정하면 점화식은 DP[N] = DP[N - 1] + DP[N - 2]이다. 점화식 도출 과정은 예를들어 N = 5라고 ..
문제 https://programmers.co.kr/learn/courses/30/lessons/12900 코딩테스트 연습 - 2 x n 타일링 가로 길이가 2이고 세로의 길이가 1인 직사각형모양의 타일이 있습니다. 이 직사각형 타일을 이용하여 세로의 길이가 2이고 가로의 길이가 n인 바닥을 가득 채우려고 합니다. 타일을 채울 때는 programmers.co.kr 풀이 DP로 해결할 수 있었다. 점화식만 구해주면 레벨3 치고는 그렇게 어렵지 않다. 점화식은 DP(N) = DP(N - 1) + DP(N - 2)이고 그 이유는 DP(5)를 예를들면 DP(5)는 DP(4)에 | 모양 타일을 하나만 넣어주어 만들 수 있고, DP(3)에 -- 모양 타일 두 개를 넣어주면 만들 수 있기 때문이다. 하지만 이런 생각..