DP 4

코테 칠 때 알쏭달쏭 헷갈리는 자바 개념

DP💡 코딩테스트 대비 DP 점화식 총정리표문제 유형 설명 점화식 힌트 / 조건💥 연속합 (최댓값)수열에서 연속된 수의 합 중 최대dp[i] = max(arr[i], dp[i-1] + arr[i])카데인 알고리즘, 첫 항 초기화 주의!📈 최장 증가 부분 수열 (LIS)증가하는 수열 중 가장 긴 것dp[i] = max(dp[j] + 1) (j for문 2중 루프 자주 등장!🎒 0/1 배낭 문제 (Knapsack)무게 제한 안에서 최대 가치 구하기dp[w] = max(dp[w], dp[w - weight[i]] + value[i])무게 역순으로 순회해야 중복 방지됨🪜 계단 오르기 / 점프n번째 칸까지 도달할 수 있는 방법dp[i] = dp[i-1] + dp[i-2]피보나치 느낌! 제한 조건 주의🧮..

[백준] S3. 2xn 타일링 (Java)

문제2×n 크기의 직사각형을 1×2, 2×1 타일로 채우는 방법의 수를 구하는 프로그램을 작성하시오.아래 그림은 2×5 크기의 직사각형을 채운 한 가지 방법의 예이다.입력첫째 줄에 n이 주어진다. (1 ≤ n ≤ 1,000)출력첫째 줄에 2×n 크기의 직사각형을 채우는 방법의 수를 10,007로 나눈 나머지를 출력한다.예제 입력 12예제 출력 12예제 입력 29예제 출력 255문제 풀이❌ 내 풀이 1차import java.io.*;import java.util.*;public class Main { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new Inp..

[프로그래머스] LV3. 연속 펄스 부분 수열의 합

문제어떤 수열의 연속 부분 수열에 같은 길이의 펄스 수열을 각 원소끼리 곱하여 연속 펄스 부분 수열을 만들려 합니다. 펄스 수열이란 [1, -1, 1, -1 …] 또는 [-1, 1, -1, 1 …] 과 같이 1 또는 -1로 시작하면서 1과 -1이 번갈아 나오는 수열입니다.예를 들어 수열 [2, 3, -6, 1, 3, -1, 2, 4]의 연속 부분 수열 [3, -6, 1]에 펄스 수열 [1, -1, 1]을 곱하면 연속 펄스 부분수열은 [3, 6, 1]이 됩니다. 또 다른 예시로 연속 부분 수열 [3, -1, 2, 4]에 펄스 수열 [-1, 1, -1, 1]을 곱하면 연속 펄스 부분수열은 [-3, -1, -2, 4]이 됩니다.정수 수열 sequence가 매개변수로 주어질 때, 연속 펄스 부분 수열의 합 중 ..

[백준] S3. 퇴사 (Python)

문제 설명 상담원으로 일하고 있는 백준이는 퇴사를 하려고 한다. 오늘부터 N+1일째 되는 날 퇴사를 하기 위해서, 남은 N일 동안 최대한 많은 상담을 하려고 한다. 백준이는 비서에게 최대한 많은 상담을 잡으라고 부탁을 했고, 비서는 하루에 하나씩 서로 다른 사람의 상담을 잡아놓았다. 각각의 상담은 상담을 완료하는데 걸리는 기간 Ti와 상담을 했을 때 받을 수 있는 금액 Pi로 이루어져 있다. N = 7인 경우에 다음과 같은 상담 일정표를 보자. 1일 2일 3일 4일 5일 6일 7일 Ti 3 5 1 1 2 4 2 Pi 10 20 10 20 15 40 200 1일에 잡혀있는 상담은 총 3일이 걸리며, 상담했을 때 받을 수 있는 금액은 10이다. 5일에 잡혀있는 상담은 총 2일이 걸리며, 받을 수 있는 금액은..