동적계획법

PS/알고리즘 문제풀이

[백준]1520번 내리막 길(java)

https://www.acmicpc.net/problem/1520 1520번: 내리막 길 여행을 떠난 세준이는 지도를 하나 구하였다. 이 지도는 아래 그림과 같이 직사각형 모양이며 여러 칸으로 나뉘어져 있다. 한 칸은 한 지점을 나타내는데 각 칸에는 그 지점의 높이가 쓰여 있으 www.acmicpc.net 핵심 이 문제는 DFS로 풀면 시간초과가 나게 된다. 따라서 DP를 함께 사용한다. 이미 탐색한 부분은 다시 탐색하지 않는 방법을 이용한다. 정답 코드 import java.util.Scanner; public class Main { static int M; static int N; static int[][] map; static int[] dy = {1, 0, -1, 0}; static int[] d..

PS/알고리즘

동적계획법(DP)

동적 계획법(Dynamic Proframming)이란? 부분 문제를 해결한 결과를 이용하여 전체 문제를 해결하는 것 작은 나를 해결함으로써 더 큰 나를 해결함 동적 계획법의 문제 풀이 순서 1. 부분 문제를 정의한다. - 무슨 값을 구할지를 정의한다. 2. 점화식을 구한다. - 그 값을 어떻게 구할지에 대한 식을 세운다. ( 부분은 풀려있다고 가정) 3. 문제를 해결한다. - 값을 직접 구하는 코드를 작성한다. 동적 계획법을 활용한 대표적인 예시 피보나치 수 구하기가 있다. 점화식을 활용하기 위해 index 0,1에 해당하는 값을 미리 채워주어야 한다. 반복문을 통해 이전의 값을 활용하여 채워주면서 나아가면 된다. 동적 계획법 활용 문제 개인적으로 동적 계획법 자체는 쉽지만 부분 문제를 정의하는 것이 어..

PS/알고리즘 문제풀이

[백준]1149번 RGB거리(java)

https://www.acmicpc.net/problem/1149 1149번: RGB거리 첫째 줄에 집의 수 N(2 ≤ N ≤ 1,000)이 주어진다. 둘째 줄부터 N개의 줄에는 각 집을 빨강, 초록, 파랑으로 칠하는 비용이 1번 집부터 한 줄에 하나씩 주어진다. 집을 칠하는 비용은 1,000보다 작거나 www.acmicpc.net 백준 1149번 RGB거리 문제 링크입니다. 핵심 문제를 요약해보면, N개의 집이 있고, 인접한 집은 같은 색을 칠하지 못한다. 각 집마다 빨강, 초록, 파랑의 비용을 준다. DP를 사용하는데, 최소 비용만을 구하는 것이 목적이다. 정답 코드 import java.io.BufferedReader; import java.io.IOException; import java.io.I..

PS/알고리즘 문제풀이

[백준]2156번 포도주 시식(java)

https://www.acmicpc.net/problem/2156 2156번: 포도주 시식 효주는 포도주 시식회에 갔다. 그 곳에 갔더니, 테이블 위에 다양한 포도주가 들어있는 포도주 잔이 일렬로 놓여 있었다. 효주는 포도주 시식을 하려고 하는데, 여기에는 다음과 같은 두 가지 규 www.acmicpc.net 백준 2156번 포도주 시식 문제 링크입니다. 핵심 이 문제는 저번에 풀었던 계단 오르기와 매우 유사한 문제이다. https://kimtaesoo99.tistory.com/31 [백준]2579번 계단 오르기 https://www.acmicpc.net/problem/2579 과 같이 각각의 계단에는 일정한 점수가 쓰여 있는데 계단을 밟으면 그 계단에 쓰여 있는 점" data-og-host="www.a..

PS/알고리즘 문제풀이

[백준]1463번 1로 만들기(java)

https://www.acmicpc.net/problem/1463 1463번: 1로 만들기 첫째 줄에 1보다 크거나 같고, 106보다 작거나 같은 정수 N이 주어진다. www.acmicpc.net 백준 1463번 1로 만들기 문제 링크입니다. 핵심 단순하게 3으로 나누고, 2로 나누고, 1을 빼는 순서로 풀게 된다면, 함정에 걸린 것이다. 바로 10이 그 예시이다. 제일 적게 조합해서 만드는 방법을 0부터 차례대로 생각해야 한다. 정답 코드 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; public class Main{ public static void main(String[] args..

PS/알고리즘 문제풀이

[백준]2579번 계단 오르기(java)

https://www.acmicpc.net/problem/2579 2579번: 계단 오르기 계단 오르기 게임은 계단 아래 시작점부터 계단 꼭대기에 위치한 도착점까지 가는 게임이다. 과 같이 각각의 계단에는 일정한 점수가 쓰여 있는데 계단을 밟으면 그 계단에 쓰여 있는 점 www.acmicpc.net 백준 2579번 계단 오르기 문제 링크입니다. 핵심 계단을 1칸, 2칸 이동 가능하다. 마지막 계단은 반드시 밟아야 한다. 3개 연속으로 계단은 올라갈 수 없다. 가장 중요한 것이 3개의 계단을 연속으로 올라갈 수 없다는 것이다. 정답 코드 import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner ..

PS/알고리즘 문제풀이

[백준]9184번 신나는 함수 실행(java)

https://www.acmicpc.net/problem/9184 9184번: 신나는 함수 실행 입력은 세 정수 a, b, c로 이루어져 있으며, 한 줄에 하나씩 주어진다. 입력의 마지막은 -1 -1 -1로 나타내며, 세 정수가 모두 -1인 경우는 입력의 마지막을 제외하면 없다. www.acmicpc.net 백준 9184번 신나는 함수 실행 문제 링크입니다. 핵심 동적 계획법을 사용하는 것인데, 재귀와 메모이제이션을 사용한다. 정답 코드 import java.util.Scanner; public class Main{ public static int[][][] arr = new int[21][21][21]; public static void main(String[] args) { Scanner sc = n..

javajoha
'동적계획법' 태그의 글 목록