다이나믹 프로그래밍 71

백준(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..

[다이나믹 프로그래밍] 이코테 (파이썬) 퇴사 풀이

[문제] 상담원으로 일하고 있는 백준이는 퇴사를 하려고 합니다. 오늘부터 N + 1일째 되는 날 퇴사를 하기 위해서, 남은 N일 동안 최대한 많은 상담을 하려고 합니다. 백준이는 비서에게 최대한 많은 상담을 잡으라고 부탁을 했고, 비서는 하루에 하나씩 서로 다른 사람의 상담을 잡아 놓았습니다. 각각의 상담은 상담을 완료하는 데 걸리는 기간 Ti와 상담을 했을 때 받을 수 있는 금액 Pi로 이루어져 있습니다. N = 7인 경우에 다음과 같은 상담 일정표가 있습니다. 1일 2일 3일 4일 5일 6일 7일 Ti 3 5 1 1 2 4 2 Pi 10 20 10 20 15 40 200 1일에 잡혀 있는 상담은 총 3일이 걸리며, 상담했을 때 받을 수 있는 금액은 10입니다. 5일에 잡혀 있는 상담은 총 2일이 걸리..

백준(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_..

[다이나믹 프로그래밍] 이코테 (파이썬) 정수 삼각형 풀이

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

[다이나믹 프로그래밍] 이코테 (파이썬) 금광 풀이

[문제] n x m 크기의 금광이 있습니다. 금광은 1 x 1 크기의 칸으로 나누어져 있으며, 각 칸은 특정한 크기의 금이 들어 있습니다. 채굴자는 첫 번재 열부터 출발하여 금을 캐기 시작합니다. 맨 처음에는 첫 번째 열의 어느 행에서든 출발할 수 있습니다. 이후에 m번에 걸쳐서 매번 오른쪽 위, 오른쪽, 오른쪽 아래 3가지 중 하나의 위치로 이동해야 합니다. 결과적으로 채굴자가 얻을 수 있는 금의 최대 크기를 출력하는 프로그램을 작성하세요. 만약 다음과 같이 3 x 4 크기의 금광이 존재한다고 가정합시다. 1 3 3 2 2 1 4 1 0 6 4 7 가장 왼쪽 위의 위치를 (1, 1), 가장 오른쪽 아래의 위치를 (n, m)이라고 할 때, 위 예시에서는 (2, 1) -> (3, 2) -> (3, 3) -..

백준(Python) 15881번 Pen Pineapple Apple Pen 풀이

Python으로 구현한 15881번 Pen Pineapple Apple Pen 문제 풀이입니다. https://www.acmicpc.net/problem/15881 15881번: Pen Pineapple Apple Pen 여러 개의 사과, 파인애플, 그리고 펜이 일렬로 세워져 있다. 이 물건들의 순서를 바꾸지 않고 옆에 있는 물건끼리 연결했을 때, 펜-파인애플-애플-펜을 몇 개나 만들 수 있을지 세어보자. 단, 펜, www.acmicpc.net n = int(input()) data = input() result = 0 i = 0 while i

백준(Python) 16395번 파스칼의 삼각형 풀이

Python으로 구현한 16395번 파스칼의 삼각형 문제 풀이입니다. https://www.acmicpc.net/problem/16395 16395번: 파스칼의 삼각형 파스칼의 삼각형은 이항계수를 삼각형 형태로 배열한 것인데, 블레즈 파스칼(1623-1662)을 따라 이름 붙여졌다. 단순한 형태로, 파스칼의 삼각형은 다음과 같은 방법으로 만들 수 있다. N번째 행 www.acmicpc.net data = [[1 for _ in range(i)] for i in range(1, 31)] for i in range(2, 30) : for j in range(1, i) : data[i][j] = data[i-1][j-1] + data[i-1][j] n, k = map(int, input().split()) p..

백준(Python) 14916번 거스름돈 풀이

Python으로 구현한 14916번 거스름돈 문제 풀이입니다. https://www.acmicpc.net/problem/14916 14916번: 거스름돈 첫째 줄에 거스름돈 액수 n(1 ≤ n ≤ 100,000)이 주어진다. www.acmicpc.net import sys n = int(sys.stdin.readline()) value = n % 5 if n == 1 or n == 3 : print(-1) elif value % 2 == 0 : print(n // 5 + value // 2) else : print((n // 5) - 1 + (value + 5) // 2) 거스름돈(n)을 입력받고 n을 5로 나눈 나머지 값을 value에 할당한다. 만약 입력받은 n의 값이 1이거나 3일 경우 계산할 수 ..

백준(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이 되..