dp(4)
-
[백준] 2193 - 이친수
문제 링크https://www.acmicpc.net/problem/2193깨달은 점그냥 반복하다보니 규칙을 찾아버렸네..?import sysN = int(sys.stdin.readline())DP = [0 for _ in range(91)]if 1
2024.06.25 -
[백준] 11726 - 2×n 타일링
문제 링크https://www.acmicpc.net/problem/11726깨달은 점쉬운 dp 문제들은 어느정도 규칙성이 보여서 이제 쉽게 풀 수 있을 듯..?, 중요한 것은 이전 단계들과의 관계를 찾는 것!import sysN = int(sys.stdin.readline())DP = [0 for _ in range(1001)]if 1
2024.06.25 -
[백준] 9095 - 1, 2, 3 더하기
문제 링크https://www.acmicpc.net/problem/9095깨달은 점dp 문제는 현재의 큰 문제를 작은 문제들로 나누어 푸는데 점화식으로 해결해야할 때도 많은 것 같다.# 현재 숫자에서 1을 빼게되면, 첫 번째 이전의 숫자가 되고 2를 빼게 되면, 두 번째 이전의 숫자, 3을 빼게 되면 세 번째 이전의 숫자가 된다.# 따라서, 현재 숫자를 1,2,3으로 구성할 수 있는 수는 첫 번째, 두 번째, 세 번째 이전 숫자를 만드는 경우를 모두 더하면 된다. 따라서 점화식을 구현하면 아래와 같다. import sysiter = int(sys.stdin.readline())answer_list = [] for _ in range(iter): dp = [0 for _ in range(12)] ..
2024.06.25 -
[백준] 1463 - 1로 만들기
문제 링크https://www.acmicpc.net/problem/1463느낀점DP문제인지 판단할 때, 더 작은 문제로 나눌 수 있는지를 생각해보고 만약 DP로 풀 수 있다면, 어떻게 이전의 값을 이용하여 문제를 해결할 수 있는지 생각해보자# 목표가 되는 수까지 모든 숫자를 계산해서 저장해놓은 후, 이를 바탕으로 목표 숫자를 계산# 여기서 중요한 것은, 목표 숫자를 분해하는 것이 이전 숫자들을 이용하여 할 수 있다는 것import sysnum = int(sys.stdin.readline())# DP 테이블 초기화DP = [0] * 1000001# 다이나믹 프로그래밍 진행(bottom-up)for i in range(2, num+1): # 현재의 수에서 1을 빼는 경우 DP[i] = DP[i-1..
2024.06.25