목록알고리즘/동적계획법(Dynamic Programming) (7)
코드굽는 타자기
링크 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제설명 점화식, DP 문제풀이 피보나치수열 A_1 = 1 = | A_2 = 2 = | |+〓 A_3 = 3 = | | | + | 〓 + 〓 | ... | 로 끝나는 경우는 | | , 〓 2가지 경우를 만들고 〓로 끝나는 경우는 〓 | 1가지 경우를 만든다. A_n = A_n-1 + A_n-2에서 A_n의 경우의 갯수 중 | 로 끝나는 경우의 갯수가 A_n-1이고 A_n-1의 모든 경우의 갯수에 |를 붙일 수 있으므로 〓로 끝나는 경우의 갯수가 A_n-2이다 A_n-1의 |로 끝나는 경우의 갯수만큼 〓을..
링크 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제설명 점화식, DP 문제풀이 DP 2의 배수인 경우만 가능 제일 오른쪽 배치의 경우의 수가 3가지가 있다 편의상 각각 ↑↓≡으로 표시한다. A_2 위의 3가지경우 A_4 A_2*3 + Alpha가 있다 Alpha는 다음 2가지 경우가 있다 에서 파생되는 에서 파생되는 파생되는 Alpha는 ↑↓에서 파생되는 것을 알 수 있다. A_2, A_4, A_6을 트리 형식으로 표현해보면 A_4 = A_2 * 3 + Alpha([주황](1 * 2)) A_6 = A_4 * 3 + Alpha([주황](1 * 2) +..
링크 SWEA[9282] 문제설명 완전탐색 문제풀이 완전탐색 -> 분할정복으로 재귀 시간초과 -> memoization 필요 문제코드 import java.io.BufferedReader; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; import java.io.InputStreamReader; import java.util.StringTokenizer; public class Solution9282 { public static int N; public static int M; public static int[][] map; public static int[][][][] mem..
링크 SWEA[5642] 문제설명 부분수열의 최대 합 SWEA[3307] - 최장 증가 부분 수열[D3]랑 비슷 문제풀이 완전탐색 :O(N^2) -> DP :O(N) 문제코드 import java.io.FileInputStream; import java.io.FileNotFoundException; import java.util.Scanner; public class Solution5642 { public static void main(String[] args) throws FileNotFoundException { //System.setIn(new FileInputStream("res/swea/5642.txt")); Scanner sc = new Scanner(System.in); int T=sc.ne..