dp 8

[python] 백준 2293번: 동전1(DP)

# 2293 동전1 https://www.acmicpc.net/problem/2293 2293번: 동전 1 첫째 줄에 n, k가 주어진다. (1 ≤ n ≤ 100, 1 ≤ k ≤ 10,000) 다음 n개의 줄에는 각각의 동전의 가치가 주어진다. 동전의 가치는 100,000보다 작거나 같은 자연수이다. www.acmicpc.net ⭐ 코드 import sys input = sys.stdin.readline n, k = map(int, input().split()) coins = [] for _ in range(n): coins.append(int(input())) dp = [0] * (k + 1) dp[0] = 1 for i in coins: for j in range(i, k+1): if j - i >=..

Algorithm 2023.02.18

[python] 백준 12865번: 평범한 배낭(DP)

# 12865 평범한 배낭 https://www.acmicpc.net/problem/12865 12865번: 평범한 배낭 첫 줄에 물품의 수 N(1 ≤ N ≤ 100)과 준서가 버틸 수 있는 무게 K(1 ≤ K ≤ 100,000)가 주어진다. 두 번째 줄부터 N개의 줄에 거쳐 각 물건의 무게 W(1 ≤ W ≤ 100,000)와 해당 물건의 가치 V(0 ≤ V ≤ 1,000) www.acmicpc.net ⭐ 코드 import sys input = sys.stdin.readline N, K = map(int, input().split()) bag = [(0,0)] # 인덱스 0자리 차지하기 for _ in range(N): W, V = map(int, input().split()) bag.append((W,..

Algorithm 2023.02.18

[python] 백준 11060번: 점프 점프(DP)

# 11060 점프 점프 https://www.acmicpc.net/problem/11060 11060번: 점프 점프 재환이가 1×N 크기의 미로에 갇혀있다. 미로는 1×1 크기의 칸으로 이루어져 있고, 각 칸에는 정수가 하나 쓰여 있다. i번째 칸에 쓰여 있는 수를 Ai라고 했을 때, 재환이는 Ai이하만큼 오른쪽으로 www.acmicpc.net ⭐ 코드 import sys input = sys.stdin.readline N = int(input()) jump_list = list(map(int, input().split())) dp = [-1] * N dp[0] = 0 for current in range(0, N-1): if dp[current] == -1: continue for next_step ..

Algorithm 2023.02.15

[python] 백준 17404번: RGB거리2(DP)

# 17404 RGB거리2 https://www.acmicpc.net/problem/17404 17404번: RGB거리 2 첫째 줄에 집의 수 N(2 ≤ N ≤ 1,000)이 주어진다. 둘째 줄부터 N개의 줄에는 각 집을 빨강, 초록, 파랑으로 칠하는 비용이 1번 집부터 한 줄에 하나씩 주어진다. 집을 칠하는 비용은 1,000보다 작거나 www.acmicpc.net ⭐ 코드 import sys input = sys.stdin.readline N = int(input()) house = [list(map(int, input().split())) for _ in range(N)] INF = sys.maxsize answer = INF for i in range(3): dp = [[INF, INF, INF] ..

Algorithm 2023.02.10

[python] 백준 1890번: 점프(DP)

# 1890 점프 https://www.acmicpc.net/problem/1890 1890번: 점프 첫째 줄에 게임 판의 크기 N (4 ≤ N ≤ 100)이 주어진다. 그 다음 N개 줄에는 각 칸에 적혀져 있는 수가 N개씩 주어진다. 칸에 적혀있는 수는 0보다 크거나 같고, 9보다 작거나 같은 정수이며, 가장 www.acmicpc.net ⭐ 코드 import sys input = sys.stdin.readline N = int(input()) board = [list(map(int, input().split())) for _ in range(N)] dp = [[0] * N for _ in range(N)] dp[0][0] = 1 for i in range(N): for j in range(N): if ..

Algorithm 2023.02.10

[python] 백준 11048번: 이동하기(DP)

# 11048 이동하기 https://www.acmicpc.net/problem/11048 11048번: 이동하기 준규는 N×M 크기의 미로에 갇혀있다. 미로는 1×1크기의 방으로 나누어져 있고, 각 방에는 사탕이 놓여져 있다. 미로의 가장 왼쪽 윗 방은 (1, 1)이고, 가장 오른쪽 아랫 방은 (N, M)이다. 준규는 www.acmicpc.net ⭐ 코드 import sys input = sys.stdin.readline N, M = map(int, input().split()) candy = [list(map(int, input().split())) for _ in range(N)] dp = [[0] * (M + 1) for _ in range(N+1)] for i in range(1, N + 1):..

Algorithm 2023.02.10

[python]백준 2579번: 계단 오르기(DP)

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

Algorithm 2023.01.04

[python]백준 1463번: 1로 만들기(DP)

# 1463 1로 만들기 https://www.acmicpc.net/problem/1463 1463번: 1로 만들기 첫째 줄에 1보다 크거나 같고, 106보다 작거나 같은 정수 N이 주어진다. www.acmicpc.net 코드 n = int(input()) dp = [0] * (n+1) for i in range(2, n + 1): dp[i] = dp[i-1] + 1 if i % 2 == 0: dp[i] = min(dp[i], dp[i//2] + 1) if i % 3 == 0: dp[i] = min(dp[i], dp[i//3] + 1) print(dp[n]) 📝 풀이 문제에서는 1로 만들기 위한 세 가지 가정을 제시했다. X가 3으로 나누어 떨어지면, 3으로 나눈다. X가 2로 나누어 떨어지면, 2로 나..

Algorithm 2023.01.04
728x90