문제풀이/DP 35

[파이썬] [DP] 백준 11066 파일 합치기

문제 https://www.acmicpc.net/problem/11066 11066번: 파일 합치기 소설가인 김대전은 소설을 여러 장(chapter)으로 나누어 쓰는데, 각 장은 각각 다른 파일에 저장하곤 한다. 소설의 모든 장을 쓰고 나서는 각 장이 쓰여진 파일을 합쳐서 최종적으로 소설의 완성본 www.acmicpc.net 코드 import sys INF=sys.maxsize t=int(input()) while(t): t-=1 k=int(input()) arr=list(map(int, input().split())) dp=[[0]*k for _ in range(k)] subsum={-1:0} for i,v in enumerate(arr): subsum[i]=subsum[i-1]+v for i in r..

문제풀이/DP 2022.03.14

[파이썬] [DP] 백준 2579 계단 오르기

문제 https://www.acmicpc.net/problem/2579 2579번: 계단 오르기 계단 오르기 게임은 계단 아래 시작점부터 계단 꼭대기에 위치한 도착점까지 가는 게임이다. 과 같이 각각의 계단에는 일정한 점수가 쓰여 있는데 계단을 밟으면 그 계단에 쓰여 있는 점 www.acmicpc.net 코드 n=int(input()) array=[0] for _ in range(n): array.append(int(input())) if n==1: print(array[1]) else: dp=[0]*(n+1) dp[1]=array[1] dp[2]=array[1]+array[2] for i in range(3,n+1): dp[i]=max(dp[i-3]+array[i-1]+array[i],dp[i-2]+a..

문제풀이/DP 2022.02.24

[파이썬] [DP] Pro 도둑질

문제 https://programmers.co.kr/learn/courses/30/lessons/42897?language=python3 코딩테스트 연습 - 도둑질 도둑이 어느 마을을 털 계획을 하고 있습니다. 이 마을의 모든 집들은 아래 그림과 같이 동그랗게 배치되어 있습니다. 각 집들은 서로 인접한 집들과 방범장치가 연결되어 있기 때문에 인접한 programmers.co.kr 코드 def solution(money): dp=[0]*(len(money)) dp[0]=money[0] dp[1]=max(money[1],money[0]) for i in range(2,len(money)-1): dp[i]=max(dp[i-1],dp[i-2]+money[i]) dp1 = [0] * (len(money)) dp1..

문제풀이/DP 2022.02.17

[파이썬] [DP] Pro 등굣길

문제 https://programmers.co.kr/learn/courses/30/lessons/42898?language=python3 코딩테스트 연습 - 등굣길 계속되는 폭우로 일부 지역이 물에 잠겼습니다. 물에 잠기지 않은 지역을 통해 학교를 가려고 합니다. 집에서 학교까지 가는 길은 m x n 크기의 격자모양으로 나타낼 수 있습니다. 아래 그림은 m = programmers.co.kr 코드 import sys def solution(col, row, puddles): INF=sys.maxsize answer = 0 array=[[0]*(col+1) for _ in range(row+1)] for i,j in puddles: array[j][i]=INF for i in range(row + 1): ..

문제풀이/DP 2022.02.17

[파이썬] [DP] 백준 1149 RGB거리

문제 RGB거리에는 집이 N개 있다. 거리는 선분으로 나타낼 수 있고, 1번 집부터 N번 집이 순서대로 있다. 집은 빨강, 초록, 파랑 중 하나의 색으로 칠해야 한다. 각각의 집을 빨강, 초록, 파랑으로 칠하는 비용이 주어졌을 때, 아래 규칙을 만족하면서 모든 집을 칠하는 비용의 최솟값을 구해보자. 1번 집의 색은 2번 집의 색과 같지 않아야 한다. N번 집의 색은 N-1번 집의 색과 같지 않아야 한다. i(2 ≤ i ≤ N-1)번 집의 색은 i-1번, i+1번 집의 색과 같지 않아야 한다. 입력 첫째 줄에 집의 수 N(2 ≤ N ≤ 1,000)이 주어진다. 둘째 줄부터 N개의 줄에는 각 집을 빨강, 초록, 파랑으로 칠하는 비용이 1번 집부터 한 줄에 하나씩 주어진다. 집을 칠하는 비용은 1,000보다 ..

문제풀이/DP 2022.01.30

[파이썬] [DP] 백준 11057 오르막 수

문제 오르막 수는 수의 자리가 오름차순을 이루는 수를 말한다. 이때, 인접한 수가 같아도 오름차순으로 친다. 예를 들어, 2234와 3678, 11119는 오르막 수이지만, 2232, 3676, 91111은 오르막 수가 아니다. 수의 길이 N이 주어졌을 때, 오르막 수의 개수를 구하는 프로그램을 작성하시오. 수는 0으로 시작할 수 있다. 입력 첫째 줄에 N (1 ≤ N ≤ 1,000)이 주어진다. 출력 첫째 줄에 길이가 N인 오르막 수의 개수를 10,007로 나눈 나머지를 출력한다. 예제 입력 1 1 예제 출력 1 10 예제 입력 2 2 예제 출력 2 55 코드 n=int(input()) dp=[[0]*10 for _ in range(n)] for i in range(10): dp[0][i]=1 for ..

문제풀이/DP 2022.01.30

[파이썬] [DP] 백준 1915 가장 큰 정사각형

문제 정의 n×m의 0, 1로 된 배열이 있다. 이 배열에서 1로 된 가장 큰 정사각형의 크기를 구하는 프로그램을 작성하시오. 위와 같은 예제에서는 가운데의 2×2 배열이 가장 큰 정사각형이다. 입력 첫째 줄에 n, m(1 ≤ n, m ≤ 1,000)이 주어진다. 다음 n개의 줄에는 m개의 숫자로 배열이 주어진다. 출력 첫째 줄에 가장 큰 정사각형의 넓이를 출력한다. 예제 입력 1 4 4 0100 0111 1110 0010 예제 출력 1 4 코드 n,m=map(int, input().split()) array=[list(map(int, list(input().rstrip()))) for _ in range(n)] dp=[[0]*m for _ in range(n)] result=0 for i in rang..

문제풀이/DP 2022.01.30

[파이썬] [DP] 백준 10844 쉬운계단수

문제 45656이란 수를 보자. 이 수는 인접한 모든 자리의 차이가 1이다. 이런 수를 계단 수라고 한다. N이 주어질 때, 길이가 N인 계단 수가 총 몇 개 있는지 구해보자. 0으로 시작하는 수는 계단수가 아니다. 입력 첫째 줄에 N이 주어진다. N은 1보다 크거나 같고, 100보다 작거나 같은 자연수이다. 출력 첫째 줄에 정답을 1,000,000,000으로 나눈 나머지를 출력한다. 예제 입력 1 1 예제 출력 1 9 예제 입력 2 2 예제 출력 2 17 코드 n = int(input()) dp = [[0]*10 for _ in range(101)] for i in range(1, 10): dp[1][i] = 1 for i in range(2, n + 1): for j in range(10): if j..

문제풀이/DP 2022.01.28

[파이썬] [DP] 백준 1932 정수 삼각형

문제 7 3 8 8 1 0 2 7 4 4 4 5 2 6 5 위 그림은 크기가 5인 정수 삼각형의 한 모습이다. 맨 위층 7부터 시작해서 아래에 있는 수 중 하나를 선택하여 아래층으로 내려올 때, 이제까지 선택된 수의 합이 최대가 되는 경로를 구하는 프로그램을 작성하라. 아래층에 있는 수는 현재 층에서 선택된 수의 대각선 왼쪽 또는 대각선 오른쪽에 있는 것 중에서만 선택할 수 있다. 삼각형의 크기는 1 이상 500 이하이다. 삼각형을 이루고 있는 각 수는 모두 정수이며, 범위는 0 이상 9999 이하이다. 입력 첫째 줄에 삼각형의 크기 n(1 ≤ n ≤ 500)이 주어지고, 둘째 줄부터 n+1번째 줄까지 정수 삼각형이 주어진다. 출력 첫째 줄에 합이 최대가 되는 경로에 있는 수의 합을 출력한다. 예제 입력..

문제풀이/DP 2022.01.28