본문 바로가기

알고리즘 풀이/다이나믹 프로그래밍3

[백준/파이썬] 1463번: 1로 만들기 https://www.acmicpc.net/problem/1463 1463번: 1로 만들기 첫째 줄에 1보다 크거나 같고, 106보다 작거나 같은 정수 N이 주어진다. www.acmicpc.net import sys x = int(sys.stdin.readline()) # dp 테이블 d = [0 for _ in range(x+1)] for i in range(2, x + 1): # 1을 빼는경우 d[i] = d[i - 1] + 1 # 1을 뺄때와 3과 2로 나눌때 횟의 최솟값을 d[i]에 담는다 if i % 2 == 0: d[i] = min(d[i], d[i // 2] + 1) if i % 3 == 0: d[i] = min(d[i], d[i // 3] + 1) #결과 출력 print(d[x]) 2023. 1. 10.
[백준/파이썬] 1003번 : 피보나치 함수 https://www.acmicpc.net/problem/1003 1003번: 피보나치 함수 각 테스트 케이스마다 0이 출력되는 횟수와 1이 출력되는 횟수를 공백으로 구분해서 출력한다. www.acmicpc.net import sys t = int(sys.stdin.readline()) for _ in range(t): a = int(sys.stdin.readline()) if a == 0: print(1, 0) continue elif a == 1: print(0, 1) continue arr = [[0] * 2 for _ in range(a + 1)] arr[0] = [1, 0] arr[1] = [0, 1] for i in range(2, a + 1): arr[i] = [arr[i - 2][0] + .. 2023. 1. 9.
[백준/Python]1149번 : RGB거리 https://www.acmicpc.net/problem/1149 1149번: RGB거리 첫째 줄에 집의 수 N(2 ≤ N ≤ 1,000)이 주어진다. 둘째 줄부터 N개의 줄에는 각 집을 빨강, 초록, 파랑으로 칠하는 비용이 1번 집부터 한 줄에 하나씩 주어진다. 집을 칠하는 비용은 1,000보다 작거나 www.acmicpc.net import sys n = int(sys.stdin.readline()) arr = [] for _ in range(n): arr.append(list(map(int, sys.stdin.readline().split()))) for i in range(1, len(arr)): arr[i][0] += min(arr[i - 1][1], arr[i - 1][2]) arr[i][1].. 2023. 1. 5.