알고리즘/DP 4

프로그래머스 - 멀리 뛰기[Java]

https://school.programmers.co.kr/learn/courses/30/lessons/12914 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 처음에는 재귀호출을 이용해서 가능한 모든 경우의 수를 구해줬더니 시간초과가 발생했다. class Solution { public static long answer = 0; public long solution(int n) { dp(0,n); return answer; } public void dp(int sum, int n){ //총 뛴 칸,n if(sum ..

알고리즘/DP 2025.02.14

프로그래머스 - 땅따먹기[Java]

https://school.programmers.co.kr/learn/courses/30/lessons/12913 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 이 문제에서 가장 중요한점은 dp배열을 이용하여 각 위치에서 내려갈때 최대값을 저장하고 그 값들을 이용하여 중복 계산을 방지하는 것이다.   import java.util.*;class Solution { public static int answer = 0; public static int[][] dp; int solution(int[][] land) { dp=new int[land.length][la..

알고리즘/DP 2025.02.13

프로그래머스 - 등굣길[Java]

https://school.programmers.co.kr/learn/courses/30/lessons/42898 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr  이 문제에서 중요한건 최단 거리가 되기위한 조건이다.  목적지가 최하단의 가장 우측에 있으므로 최단 거리로 이동하기 위해서는 오른쪽으로 가거나, 아래로 가야한다. 만약 경로중 위로가거나 왼쪽으로 간다면 그것은 최단 경로에 포함이 안된다. 따라서  dp배열에 오른쪽으로 가거나 왼쪽으로 가는 경우를 저장하여 최종 목적지까지 가는 경우의 수를 더해줬다. 물 웅덩이는 dp 배열에 -1로 저장하여 방문을 막았다. import java.util.*;cl..

알고리즘/DP 2025.02.07

프로그래머스 - 정수 삼각형

https://school.programmers.co.kr/learn/courses/30/lessons/43105 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr   처음에는 dfs를 이용해서 문제를 해결했지만, 답은 맞게 나오나 시간초과가 발생하였다. 때문에 중복 계산을 방지하기 위해 메모이제이션 기법을 사용해야 한다. 메모이제이션 : 동일한 계산을 반복해야 할 경우 한 번 계산한 결과를 메모리에 저장해 두었다가 꺼내 씀으로써 중복 계산을 방지 import java.util.*;class Solution { int[][] dp; int answer = 0; public int solu..

알고리즘/DP 2025.02.05