일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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
- level1
- 그리디
- 구현
- 수학
- 코딩테스트
- BFS
- 백준
- programmers
- 재귀
- 힙
- 에라스토테네스의 체
- 가상메모리
- 다이나믹 프로그래밍
- 가상메모리 관리
- 파이썬
- level2
- BOJ
- 프로그래머스
- 브루트포스
- python
- level3
- MYSQL
- N과M
- 운영체제
- DP
- 스택
- dfs
- Today
- Total
목록전체 글 (447)
동캄의 코딩도장
https://www.acmicpc.net/problem/15649 15649번: N과 M (1) 한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안되며, 각 수열은 공백으로 구분해서 출력해야 한다. 수열은 사전 순으로 증가하는 순서로 출력해 www.acmicpc.net #15649 n,m=map(int,input().split()) s=[] def dfs(): if len(s)==m: print(' '.join(map(str,s))) return for i in range(1,n+1): if i in s: continue s.append(i) dfs() s.pop() dfs()
https://www.acmicpc.net/problem/14606 14606번: 피자 (Small) 예제1의 입력이 1이므로, 게임 시작부터 갑이 분리할 수 있는 피자탑이 없습니다. 따라서 갑이 얻는 즐거움은 0입니다. 예제2의 정답 3은 다음과 같은 과정을 통해 얻어집니다. 먼저 놀이를 시작 www.acmicpc.net #14606 n=int(input()) dp=[0]*(n+1) for i in range(1,n+1): for _ in range(1,i+1): dp[i]=dp[i//2]+dp[i-i//2]+(i//2)*(i-i//2) print(dp[n]) 1부터 시작해서 n까지 DP 값을 갱신해나간다. i번째 값은 (i//2 박스를 나눌 때의 즐거움) + (i-i//2 박스를 나눌 때의 즐거움) ..
https://www.acmicpc.net/problem/13699 13699번: 점화식 다음의 점화식에 의해 정의된 수열 t(n)을 생각하자: t(0)=1 t(n)=t(0)*t(n-1)+t(1)*t(n-2)+...+t(n-1)*t(0) 이 정의에 따르면, t(1)=t(0)*t(0)=1 t(2)=t(0)*t(1)+t(1)*t(0)=2 t(3)=t(0)*t(2)+t(1)*t(1)+t(2)*t(0)=5 ... 주어진 입력 0 ≤ n www.acmicpc.net #13699 n=int(input()) dp=[0]*(n+1) dp[0]=1 for i in range(1,n+1): for j in range(i-1,-1,-1): dp[i]+=dp[j]*dp[i-1-j] print(dp[n]) DP를 이용하여 값을..