본문 바로가기
반응형

동적계획법3

[Python] 백준 11055: 가장 큰 증가하는 부분 수열 solved.ac기준 Silver 2 - DP 문제수열 A가 주어졌을 때, 그 수열의 증가하는 부분 수열 중에서 합이 가장 큰 것을 구하는 프로그램을 작성하시오.예를 들어, 수열 A = {1, 100, 2, 50, 60, 3, 5, 6, 7, 8} 인 경우에 합이 가장 큰 증가하는 부분 수열은 A = {1, 100, 2, 50, 60, 3, 5, 6, 7, 8} 이고, 합은 113이다.입력첫째 줄에 수열 A의 크기 N (1 ≤ N ≤ 1,000)이 주어진다.둘째 줄에는 수열 A를 이루고 있는 Ai가 주어진다. (1 ≤ Ai ≤ 1,000)출력첫째 줄에 수열 A의 합이 가장 큰 증가하는 부분 수열의 합을 출력한다.예제 입력 1101 100 2 50 60 3 5 6 7 8예제 출력 1113 정답 코드n = .. 2024. 7. 15.
[Python] 백준 15645: 내려가기 2 sovled.ac 기준 Silver 1 개인적으로 알고리즘 문제 중 가장 수학적 사고력을 동반한 창의성을 요구하는 분야가 DP라고 생각한다. 저장할 공간의 효율과 동시에 방식을 스스로 정하여 수학 공식 처럼 점화식을 만들어 내야 하기 때문에, 수학 공부를 해야하나 고민하게 하는 분야 중 하나다. 문제N줄에 0 이상 9 이하의 숫자가 세 개씩 적혀 있다. 내려가기 게임을 하고 있는데, 이 게임은 첫 줄에서 시작해서 마지막 줄에서 끝나게 되는 놀이이다.먼저 처음에 적혀 있는 세 개의 숫자 중에서 하나를 골라서 시작하게 된다. 그리고 다음 줄로 내려가는데, 다음 줄로 내려갈 때에는 다음과 같은 제약 조건이 있다. 바로 아래의 수로 넘어가거나, 아니면 바로 아래의 수와 붙어 있는 수로만 이동할 수 있다는 것이다.. 2024. 6. 30.
[C] 백준 1003번: 피보나치 함수 언뜻 쉬워보이는 문제이지만 함정이다. 피보나치 함수를 그대로 줘서 마치 저걸 변형하면 되게 보이게 했지만 완전히 다른 방법으로 접근해야 한다. 문제 조건의 제한 시간은 0.25초. 시간복잡도 O(n)으로 맞춰야 풀 수 있다. 입출력 예시 정답코드 #include typedef struct fibo { int zero_count; int one_count; }FIBO; FIBO f[41] = { {0, 0} }; FIBO CountZeroOne(int); int main(){ int T; int i; int n; f[0].zero_count = 1; f[0].one_count = 0; f[1].zero_count = 0; f[1].one_count = 1; scanf("%d", &T); CountZeroO.. 2019. 3. 12.
반응형