일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- JSON 분할
- Meta Table
- 스프링 배치 메타 테이블
- 날짜형을 문자형으로
- 성능개선
- 문자형을 날짜형으로
- 무시하기
- JSON 분해
- 스프링 리액티브 프로그래밍
- spring reactive programming
- 마리아디비
- ChainedTransactionManager #분산데이터베이스 #Spring Boot #MyBatis
- 스프링 웹플럭스
- 마이바티스 트랜잭션
- batchInsert
- JSON 분리
- git stage
- jar 소스보기
- JobExecutionAlreadyRunningException
- str_to_date
- JSONArray 분할
- multi update
- spring webflux
- JSONObject 분할
- 폐기하기
- org.json
- 스프링 배치 공식문서
- nonblocking
- date_format
- 스테이지에 올리기
- Today
- Total
목록ALGORITHM STUDY WITH PYTHON/DP (10)
ebson
1. R, G, B 를 선택한 경우 N번 집까지 가는 최소값을 각각 dp[n][0], dp[n][1], dp[n][2] 으로 저장한다.2. dp[n-1][0], dp[n-1][1], dp[n-1][2] 중 최소값을 출력한다. import java.io.BufferedReader;import java.io.InputStreamReader;import java.util.StringTokenizer;public class Main { static int N; static int[][] dp; public static void main(String[] args) { try { BufferedReader br = new BufferedReader(new InputS..
1. dp를 목표금액 길이만큼 0으로 초기화 2. dp[0]을 1로 초기화 (코인 1개를 사용하는 경우) 3. coins를 순회하면서 아래를 반복 3.1. 현재 코인금액부터 목표금액까지 순회하면서 순회하는 인덱스(i) -현재코인금액(c)이 0이상이면, dp[i] += dp[i-c] 4. dp의 마지막 원소를 출력 N, K = map(int, input().split()) coins = [] for _ in range(N): coins.append(int(input())) dp = [0 for _ in range(K+1)] dp[0] = 1 for c in coins: for i in range(c, K+1): if i-c >= 0: dp[i] += dp[i-c] print(dp[K]) dp[n] 을 n금..
1. dp 배열을 스티커 리스트로 초기화 2. 1부터 스티커 리스트 길이만큼 순회하면서 아래를 반복 2.1. 1번째이면 대각선 방향의 0번째 스티커 값을 더하기 2.2. dp[0][i], dp[1][i]으로 각각 대각선 방향의 i-1, i-2번째 값 중 더 큰값을 더하기 3. dp에서 최대값을 출력 T = int(input()) for _ in range(T): N = int(input()) dp = [list(map(int, input().split())) for _ in range(2)] for i in range(1, N): if i == 1: dp[0][1] += dp[1][0] dp[1][1] += dp[0][0] else: dp[0][i] += max(dp[1][i-1], dp[1][i-2])..
1. dp 배열을 N+1 * N+1 의 크기로 초기화한다. 2. dp[1][x] 값을 cards[1] * x 값으로 초기화한다. 3. dp[ci][ni] 값을 카드를 ci번째까지 검사했을 때 총 ni 개의 카드를 갖는 최대 가격으로 저장한다. 3.1. 이전 검사에서 ni개의 카드를 갖는 최대 가격 -> dp[ci-1][ni] 3.2 이전 검사에서 ni-ci개의 카드를 갖는 최대가격 + ci개에 해당하는 카드 가격 -> dp[ci-1][ni-ci] + cards[ci] 3.3. 현재 검사에서 ni-ci개의 카드를 갖는 최대가격 + ci개에 해당하는 카드 가격 -> dp[ci][ni-ci]+cards[ci] 를 비교하고 3.4. 현재 검사에서 ni-(1이상ni미만)개의 카드를 제외하는 경우의 최대 가격 + ..
1. 문자열 A, B를 저장 2. 문자열 B의 길이만큼 dp 배열을 0으로 초기화 3. A 문자열을 순회하면서 아래를 반복 3.1. cnt 변수를 0 으로 초기화 3.2. B 문자열을 순회하면서 아래를 반복 3.2.1. cnt가 dp[bi] 보다 작으면, cnt에 dp[bi]값을 저장 3.2.2. A[ai] 값과 B[bi] 값이 같으면, dp[bi] 값에 cnt+1 값을 저장 4. dp에서 최대값을 출력 A = input() B = input() dp = [0 for _ in range(len(B))] for ai in range(len(A)): cnt = 0 for bi in range(len(B)): if cnt < dp[bi]: cnt = dp[bi] elif A[ai] == B[bi]: dp[bi..
1. dp 리스트를 wines 리스트 길이 만큼 0으로 초기화한다. 2. wines의 길이 N이 1 이면 첫번째 포도주의 양을 출력한다. 3. N이 2이면 첫번째와 두번째 포도주의 양의 합을 출력한다. 4. N이 2보다 크면 dp[0]에 첫번째 포도주의 양, dp[1]에 첫번째와 두번째 포도주의 양의 합을 저장한다. 5. dp의 3번째 요소부터 마지막 요소까지 아래를 반복해 값을 갱신한다. 5.1. dp[i]에는 i번째 포도주를 마시지 않는 경우, i번째 포도주를 마시고 그 이전에도 마신 경우, i번째 포도주를 마시고 그 이전에는 마시지 않은 경우 중 최대값을 저장한다. 6. dp 리스트의 마지막 값을 출력한다. N = int(input()) wines = [int(input()) for _ in ran..
1. 삼각형의 크기 N이 1이면 첫번째 줄의 첫번째 수를 출력한다. 2. 그렇지 않다면, dp 리스트를 N개의 리스트로 초기화한다. 3. dp 리스트의 0번째 리스트로 삼각형의 첫번째 줄을 저장한다. 4. dp 리스트의 1번째 리스트로 삼각형의 두번째 줄의 각 수에 첫번째 줄의 수를 더한 리스트를 저장한다. 5. N 이 2라면, dp 리스트의 1번째 리스트의 두 수 중 큰 수를 출력한다. 6. N 이 2보다 크면, 아래를 dp 리스트의 마지막 요소까지 반복한다. 6.1. dp 리스트의 i번째 요소로 정수 리스트를 입력받아 저장한다. 6.2. dp 리스트의 i번째 리스트를 순회하면서 아래 6.2.1. ~ 6.2.3. 을 반복한다. 6.2.1. 0번째 요소이면, 0번째 요소에 이전 리스트의 0번째 요소를 더..
1. R, G, B 를 선택한 경우 N번 집까지 가는 최소값을 각각 dp[n][0], dp[n][1], dp[n][2] 으로 저장한다.2. dp[n-1][0], dp[n-1][1], dp[n-1][2] 중 최소값을 출력한다. N = int(input())dp = [list(map(int, input().split())) for _ in range(N)]for i in range(1, len(dp)): dp[i][0] += min(dp[i-1][1], dp[i-1][2]) dp[i][1] += min(dp[i-1][0], dp[i-1][2]) dp[i][2] += min(dp[i-1][0], dp[i-1][1])print(min(dp[N-1][0], dp[N-1][1], dp[N-1][2]..