DP

알고리즘

백준 1699번 제곱수의 합 파이썬 풀이

[Python] 백준 알고리즘 온라인 저지 1699 제곱수의 합 https://www.acmicpc.net/problem/1699 1699번: 제곱수의 합 어떤 자연수 N은 그보다 작거나 같은 제곱수들의 합으로 나타낼 수 있다. 예를 들어 11=32+12+12(3개 항)이다. 이런 표현방법은 여러 가지가 될 수 있는데, 11의 경우 11=22+22+12+12+12(5개 항)도 가능하다 www.acmicpc.net 어떠한 수 N이 합하여 N이 될 때 가장 큰 제곱수 자신보다 작은 수를 하나씩 늘리며 제곱해보면 찾을 수 있다. 알고리즘 분류 다이내믹 프로그래밍 소스코드 import sys input = sys.stdin.readline n = int(input()) dp = [k for k in range(..

알고리즘

백준 1912번 연속합 파이썬 풀이

[Python] 백준 알고리즘 온라인 저지 1912 연속합 https://www.acmicpc.net/problem/1912 1912번: 연속합 첫째 줄에 정수 n(1 ≤ n ≤ 100,000)이 주어지고 둘째 줄에는 n개의 정수로 이루어진 수열이 주어진다. 수는 -1,000보다 크거나 같고, 1,000보다 작거나 같은 정수이다. www.acmicpc.net 연속되는 수의 합이 가장 큰 값을 구하는 문제로 더해져 온 값과 비교하는 코드를 작성해야 한다. 알고리즘 분류 다이내믹 프로그래밍 소스코드 import sys input = sys.stdin.readline n = int(input()) nums = list(map(int, input().split())) dp = [nums[0]] for i in ..

알고리즘

백준 14002번 가장 긴 증가하는 부분 수열 4 파이썬 풀이

[Python] 백준 알고리즘 온라인 저지 14002 가장 긴 증가하는 부분 수열 4 https://www.acmicpc.net/problem/14002 14002번: 가장 긴 증가하는 부분 수열 4 수열 A가 주어졌을 때, 가장 긴 증가하는 부분 수열을 구하는 프로그램을 작성하시오. 예를 들어, 수열 A = {10, 20, 10, 30, 20, 50} 인 경우에 가장 긴 증가하는 부분 수열은 A = {10, 20, 10, 30, 20, 50} 이 www.acmicpc.net 수열을 받으면 그중 길이가 제일 긴 증가하는 수열을 구하는 문제이다. 11053번 문제와 유사하지만 그 수열까지 출력하여야 한다. 필자는 순서가 꼬여 이 문제부터 접하고 11053번을 풀게 되었다;; 소스코드 import sys i..

알고리즘

백준 2193번 이친수 파이썬 풀이

[Python] 백준 알고리즘 온라인 저지 2193 이친수 https://www.acmicpc.net/problem/2193 2193번: 이친수 0과 1로만 이루어진 수를 이진수라 한다. 이러한 이진수 중 특별한 성질을 갖는 것들이 있는데, 이들을 이친수(pinary number)라 한다. 이친수는 다음의 성질을 만족한다. 이친수는 0으로 시작하지 않 www.acmicpc.net 문제에 제시된 조건을 만족하는 n을 작은 수부터 계산해보니 쉽게 점화식을 만들 수 있었다. 소스코드 import sys input = sys.stdin.readline n = int(input()) dp = [0, 1, 1] for i in range(3, n+1): dp.append(dp[i-2]+dp[i-1]) print(d..

알고리즘

백준 10844번 쉬운 계단 수 파이썬 풀이

[Python] 백준 알고리즘 온라인 저지 10844 쉬운 계단 수 https://www.acmicpc.net/problem/10844 10844번: 쉬운 계단 수 첫째 줄에 정답을 1,000,000,000으로 나눈 나머지를 출력한다. www.acmicpc.net DP 문제로 증가와 감소 상관없이 1씩 계단식으로 이루어진 수의 경우를 구하는 문제로 0은 제일 앞에 올 수 없다. 쉬운 이라는 타이틀이 무색하게 어려웠다.😅 소스코드 import sys input = sys.stdin.readline n = int(input()) dp = [[0] * 10 for _ in range(n+1)] for i in range(1, 10): dp[1][i] = 1 for i in range(2, n+1): for j..

알고리즘

백준 16194번 카드 구매하기 2 파이썬 풀이

[Python] 백준 알고리즘 온라인 저지 16194 카드 구매하기 2 https://www.acmicpc.net/problem/16194 16194번: 카드 구매하기 2 첫째 줄에 민규가 구매하려고 하는 카드의 개수 N이 주어진다. (1 ≤ N ≤ 1,000) 둘째 줄에는 Pi가 P1부터 PN까지 순서대로 주어진다. (1 ≤ Pi ≤ 10,000) www.acmicpc.net 저번 카드 구매하기 문제에서는 카드 n장을 구매 비용을 최댓값으로 구했다면 이번에는 최솟값을 구하는 문제이다. 코드 import sys input = sys.stdin.readline n = int(input()) p = [0] + list(map(int, input().split())) dp = [False for _ in ra..

🚀 새로운 블로그로 이전했습니다.

살펴보러 가기
minjae_4
'DP' 태그의 글 목록 (2 Page)