다이나믹 프로그래밍

    [BOJ/Python] 스티커 || 다이나믹 프로그래밍

    [BOJ/Python] 스티커 || 다이나믹 프로그래밍

    백준 스티커 파이썬 9465 9465번: 스티커첫째 줄에 테스트 케이스의 개수 T가 주어진다. 각 테스트 케이스의 첫째 줄에는 n (1 ≤ n ≤ 100,000)이 주어진다. 다음 두 줄에는 n개의 정수가 주어지며, 각 정수는 그 위치에 해당하는 스티커의 www.acmicpc.net더보기❍ 문제상근이의 여동생 상냥이는 문방구에서 스티커 2n개를 구매했다. 스티커는 그림 (a)와 같이 2행 n열로 배치되어 있다. 상냥이는 스티커를 이용해 책상을 꾸미려고 한다.상냥이가 구매한 스티커의 품질은 매우 좋지 않다. 스티커 한 장을 떼면, 그 스티커와 변을 공유하는 스티커는 모두 찢어져서 사용할 수 없게 된다. 즉, 뗀 스티커의 왼쪽, 오른쪽, 위, 아래에 있는 스티커는 사용할 수 없게 된다.모든 스티커를 붙일 수..

    [BOJ/Python] 1로 만들기 2 || 다이나믹 프로그래밍

    [BOJ/Python] 1로 만들기 2 || 다이나믹 프로그래밍

    백준 1로 만들기 2 파이썬 12858 12852번: 1로 만들기 2첫째 줄에 1보다 크거나 같고, 106보다 작거나 같은 자연수 N이 주어진다.www.acmicpc.net더보기❍ 문제정수 X에 사용할 수 있는 연산은 다음과 같이 세 가지 이다.X가 3으로 나누어 떨어지면, 3으로 나눈다.X가 2로 나누어 떨어지면, 2로 나눈다.1을 뺀다.정수 N이 주어졌을 때, 위와 같은 연산 세 개를 적절히 사용해서 1을 만들려고 한다. 연산을 사용하는 횟수의 최솟값을 출력하시오.❍ 입력첫째 줄에 1보다 크거나 같고, 106보다 작거나 같은 자연수 N이 주어진다.❍ 출력첫째 줄에 연산을 하는 횟수의 최솟값을 출력한다.둘째 줄에는 N을 1로 만드는 방법에 포함되어 있는 수를 공백으로 구분해서 순서대로 출력한다. 정답이..

    [BOJ/Python] 구간 합 구하기 5 || 다이나믹 프로그래밍

    [BOJ/Python] 구간 합 구하기 5 || 다이나믹 프로그래밍

    백준 구간 합 구하기 5 11660 11660번: 구간 합 구하기 5첫째 줄에 표의 크기 N과 합을 구해야 하는 횟수 M이 주어진다. (1 ≤ N ≤ 1024, 1 ≤ M ≤ 100,000) 둘째 줄부터 N개의 줄에는 표에 채워져 있는 수가 1행부터 차례대로 주어진다. 다음 M개의 줄에는 네 www.acmicpc.net더보기❏ 문제 설명❍ 문제N×N개의 수가 N×N 크기의 표에 채워져 있다. (x1, y1)부터 (x2, y2)까지 합을 구하는 프로그램을 작성하시오. (x, y)는 x행 y열을 의미한다.예를 들어, N = 4이고, 표가 아래와 같이 채워져 있는 경우를 살펴보자.234534564567여기서 (2, 2)부터 (3, 4)까지 합을 구하면 3+4+5+4+5+6 = 27이고, (4, 4)부터 (4,..

    [Algorithm] DP(Dynamic Programming), 동적 계획법

    [Algorithm] DP(Dynamic Programming), 동적 계획법

    다이나믹 프로그래밍(Dynamic Programming)은 동적 계획법이라고도 불린다. 이 알고리즘은 똑같은 연산을 계속 반복하지 않고, 한 번의 풀이만으로 해결하고자 하는 알고리즘이다. 큰 문제 하나를 여러 개의 작은 문제로 나누어서 해결하고자 하는 방법이다. ❗ 분할 정복 vs. 다이나믹 프로그래밍 둘의 공통점은 큰 문제 하나를 여러 개의 작은 문제로 나누어서 해결한다는 것이다. 분할 정복과 다이나믹 프로그래밍의 차이점은 DP의 경우, 나누어진 부분 문제가 중복되기 때문에, 재활용할 수 있다는 것이다. 분할 정복의 경우, 나누어진 부분 문제가 중복되지 않는다. ❗ 탑다운(Top-Down) vs. 바텀업(Bottom-Up) 탑다운 방식은 큰 문제를 해결하기 위해서 작은 문제를 호출하며 풀어나가는 방식 ..

    [백준_python] 설탕 배달 || 2839 ( 동적 계획법, 그리디 알고리즘, 런타임 에러(RecursionError))

    [백준_python] 설탕 배달 || 2839 ( 동적 계획법, 그리디 알고리즘, 런타임 에러(RecursionError))

    https://www.acmicpc.net/problem/2839 2839번: 설탕 배달상근이는 요즘 설탕공장에서 설탕을 배달하고 있다. 상근이는 지금 사탕가게에 설탕을 정확하게 N킬로그램을 배달해야 한다. 설탕공장에서 만드는 설탕은 봉지에 담겨져 있다. 봉지는 3킬로그www.acmicpc.net이전 풀이https://dmaolon00.tistory.com/18 [백준_python] 설탕 배달 || 2839www.acmicpc.net/problem/2839 2839번: 설탕 배달 상근이는 요즘 설탕공장에서 설탕을 배달하고 있다. 상근이는 지금 사탕가게에 설탕을 정확하게 N킬로그램을 배달해야 한다. 설탕공장에서 만드는 설탕dmaolon00.tistory.com이전 풀이에서 두 번째 풀이와 마찬가지로 풀이를..