백준(Python) 풀이/다이나믹 프로그래밍 26

백준(Python) 14501번 퇴사 풀이

Python으로 구현한 14501번 퇴사 문제 풀이입니다. https://www.acmicpc.net/problem/14501 14501번: 퇴사 첫째 줄에 백준이가 얻을 수 있는 최대 이익을 출력한다. www.acmicpc.net n = int(input()) # 전체 상담 개수 t = [] # 각 상담을 완료하는 데 걸리는 기간 p = [] # 각 상담을 완료했을 때 받을 수 있는 금액 dp = [0] * (n + 1) # 다이나믹 프로그래밍을 위한 1차원 dp 테이블 초기화 max_value = 0 for _ in range(n) : x, y = map(int, input().split()) t.append(x) p.append(y) # 리스트를 뒤에서부터 거꾸로 확인 for i in range(n..

백준(Python) 1932번 정수 삼각형 풀이

Python으로 구현한 1932번 정수 삼각형 문제 풀이입니다. https://www.acmicpc.net/problem/1932 1932번: 정수 삼각형 첫째 줄에 삼각형의 크기 n(1 ≤ n ≤ 500)이 주어지고, 둘째 줄부터 n+1번째 줄까지 정수 삼각형이 주어진다. www.acmicpc.net n = int(input()) dp = [] # 다이나믹 프로그래밍을 위한 DP 테이블 초기화 for _ in range(n) : dp.append(list(map(int, input().split()))) # 다이나믹 프로그래밍으로 두 번째 줄부터 내려가면서 확인 for i in range(1, n) : for j in range(i + 1) : # 왼쪽 위에서 내려오는 경우 if j == 0 : up_..

백준(Python) 13301번 타일 장식물 풀이

Python으로 구현한 13301번 타일 장식물 문제 풀이입니다. https://www.acmicpc.net/problem/13301 13301번: 타일 장식물 대구 달성공원에 놀러 온 지수는 최근에 새로 만든 타일 장식물을 보게 되었다. 타일 장식물은 정사각형 타일을 붙여 만든 형태였는데, 한 변이 1인 정사각형 타일부터 시작하여 마치 앵무조개 www.acmicpc.net n = int(input()) data = [0] * 81 data[0] = 4 data[1] = 6 for i in range(2, n + 1) : data[i] = data[i-1] + data[i-2] print(data[n-1]) data[0]의 경우 처음 정사각형의 둘레가 4이며, data[1]의 경우 두번째 정사각형이 붙으..

백준(Python) 9625번 BABBA 풀이

Python으로 구현한 9625번 BABBA 문제 풀이입니다. https://www.acmicpc.net/problem/9625 9625번: BABBA 상근이는 길을 걷다가 신기한 기계를 발견했다. 기계는 매우 매우 큰 화면과 버튼 하나로 이루어져 있다. 기계를 발견했을 때, 화면에는 A만 표시되어져 있었다. 버튼을 누르니 글자가 B로 변했 www.acmicpc.net k = int(input()) fibo = [0] * (k + 1) fibo[1] = 1 for i in range(2, k + 1) : fibo[i] = fibo[i-1] + fibo[i-2] print(fibo[k-1], fibo[k]) 피보나치 수열 방식을 통해 문제를 해결할 수 있다. fibo 리스트의 0번째 인덱스의 값은 0이 되..

백준(Python) 9095번 1, 2, 3 더하기 풀이

Python으로 구현한 9095번 1, 2, 3 더하기 문제 풀이입니다. https://www.acmicpc.net/problem/9095 9095번: 1, 2, 3 더하기 각 테스트 케이스마다, n을 1, 2, 3의 합으로 나타내는 방법의 수를 출력한다. www.acmicpc.net tc = int(input()) data = [1, 2, 4] for i in range(3, 10) : data.append(data[i-1] + data[i-2] + data[i-3]) for i in range(tc) : n = int(input()) print(data[n-1]) 반복문을 통해 data 리스트의 이전 3개의 값들을 더한 값을 리스트에 추가한다. 출력 시에는 리스트의 인덱스가 0부터 시작되기 때문에 d..

백준(Python) 1463번 1로 만들기 풀이

Python으로 구현한 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 % 3 == 0 : dp[i] = min(dp[i], dp[i // 3] + 1) if i % 2 == 0 : dp[i] = min(dp[i], dp[i // 2] + 1) print(dp[n]) 1. n이 3으로 나누어 떨어지면, 3으로 나눈다. 2. n이 2로 나누어 떨어지면, 2로 나..