일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
- level0
- 가상메모리 관리
- level3
- BFS
- 딕셔너리
- 스택
- python
- level2
- 재귀
- 브루트포스
- 구현
- 백준
- level1
- 다익스트라
- programmers
- DP
- MYSQL
- 그리디
- 운영체제
- 코딩테스트
- BOJ
- 에라스토테네스의 체
- 힙
- 프로그래머스
- 가상메모리
- 파이썬
- 수학
- dfs
- 다이나믹 프로그래밍
- N과M
- Today
- Total
목록DP (19)
동캄의 코딩도장
https://www.acmicpc.net/problem/2302 # 최종 정답을 저장할 변수ans = 1 # 전체 좌석 개수 N 입력N = int(input()) # VIP 좌석 개수 M 입력M = int(input()) # DP 배열 선언 (각 크기에 대해 가능한 좌석 배치 경우의 수 저장)dp = [0 for _ in range(101)] # 기본적인 피보나치 초기값 설정 (1개 좌석일 때 1가지, 2개 좌석일 때 2가지 경우)dp[0] = 1 # 빈 좌석 (계산 편의상 1로 설정)dp[1] = 1 # [O] → 한 가지 방법dp[2] = 2 # [OO], [XX] → 두 가지 방법# DP를 이용해 n개의 좌석을 배치할 수 있는 경우의 수 계산# 피보나치 수열을 따름: dp[i] = d..
https://www.acmicpc.net/problem/1495 생각보다 아이디어가 빨리 떠올라 쉽게 풀었다.#백준 1495 기타리스트from collections import dequeN,S,M=map(int,input().split())Vol=list(map(int,input().split()))times=[[-1 for _ in range(M+1)] for _ in range(N+1)]times[0][S]=Sfor i in range(1,N+1): for j in range(M+1): if times[i-1][j]!=-1: if j+Vol[i-1]=0: times[i][j-Vol[i-1]]=j-Vol[i-1]print(max(time..
https://www.acmicpc.net/problem/2167 어떻게 풀어도 풀리는 문제다.#백준 2167 2차원 배열의 합import sysN,M=map(int,sys.stdin.readline().split())arr=[]for _ in range(N): arr.append(list(map(int,sys.stdin.readline().split())))for _ in range(int(sys.stdin.readline())): ans=0 start_r,start_c,end_r,end_c=map(int,sys.stdin.readline().split()) rows=arr[start_r-1:end_r] for row in rows: ans+=sum(row[sta..
https://www.acmicpc.net/problem/5525 5525번: IOIOI N+1개의 I와 N개의 O로 이루어져 있으면, I와 O이 교대로 나오는 문자열을 PN이라고 한다. P1 IOI P2 IOIOI P3 IOIOIOI PN IOIOI...OI (O가 N개) I와 O로만 이루어진 문자열 S와 정수 N이 주어졌을 때, S안에 PN이 몇 www.acmicpc.net #백준 5525 IOIOI import sys input=sys.stdin.readline N=int(input()) M=int(input()) S=list(map(str,input().rstrip())) target=2*N+1 dp=[0]*(M) answer=0 if S[0]=='I': dp[0]=1 for i in range(..
https://www.acmicpc.net/problem/4811 4811번: 알약 입력은 최대 1000개의 테스트 케이스로 이루어져 있다. 각 테스트 케이스는 한 줄이며, 병에 들어있는 약의 개수 N ≤ 30 가 주어진다. 입력의 마지막 줄에는 0이 하나 주어진다. www.acmicpc.net # 백준 4811 알약 import sys input = sys.stdin.readline ans = [0]*(32) dp = [[0]*32 for _ in range(32)] for i in range(1, 32): dp[i][0] = 1 for i in range(1, 32): for j in range(1, i+1): dp[j][i] = dp[j-1][i]+dp[j][i-1] # dp[j+1][i]=dp[j..
https://www.acmicpc.net/problem/9507 9507번: Generations of Tribbles 꿍은 군대에서 진짜 할짓이 없다. 그래서 꿍만의 피보나치를 만들어보려고 한다. 기존의 피보나치는 너무 단순해서 꿍은 좀더 복잡한 피보나치를 만들어보고자 한다. 그래서 다음과 같은 피보 www.acmicpc.net #백준 9507 import sys n=int(sys.stdin.readline()) dp=[1,1,2,4] for i in range(4,70): dp.append(dp[i-1]+dp[i-2]+dp[i-3]+dp[i-4]) for _ in range(n): k=int(sys.stdin.readline()) print(dp[k]) dp 문제이다.