본문 바로가기

전체 글263

백준 9095 ▶ 9095번 문제 ▶풀이 방법 import java.io.*; public class Main{ public static void main(String[] args) throws IOException{ BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); int count = Integer.parseInt(br.readLine()); int[] dp = new int[11]; dp[1] = 1; dp[2] = 2; dp[3] = 4; for(int j = 0; j < count; j++) { int num = Integer.parseInt(br.readLine()); for(int i = 4; i 2022. 3. 20.
백준 11727 ▶11727번 문제 ▶풀이방법 import java.io.*; public class Main{ public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out)); int num = Integer.parseInt(br.readLine()); int[] dp = new int[num+2]; dp[1] = 1; dp[2] = 3; for(int i = 3; i 2022. 3. 20.
백준 11726 ▶11726번 문제 ▶풀이방법 import java.io.*; public class Main{ public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out)); int num = Integer.parseInt(br.readLine()); int[] dp = new int[num+2]; dp[1] = 1; dp[2] = 2; for(int i = 3; i 2022. 3. 19.
알고리즘 - Dynamic Programming(동적 계획법) ▶ 다이나믹 프로그래밍 - 복잡한 큰 문제를 간단한 여러 작은 문제로 나눠서 푸는 알고리즘 ▶ 다이나믹 프로그래밍 방법. - 모든 작은 문제들은 한번만 풀어야 함. - 작은 문제들에 대한 정답을 어딘가에 메모해 놓아야 함 -> Memoization - 같은 문제가 나타나면 메모해 두었던 작은 문제의 결과값을 이용함. - 피보나치 수열 사용 ▶ 다이나믹 프로그래밍 조건 1. 작은 문제가 반복이 일어나는 경우. 2. 최적 부분 구조. 작은 문제의 결과 구할 때 과정에 사용된 정답 항상 같음. ▶ 다이나믹 프로그래밍 구현 방법 1. Top-Down : 재귀함수 이용한 방법(문제를 여러 문제로 나눠 놓고 필요할 때 구함) 2. Botto.. 2022. 3. 19.