일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- level1
- 재귀
- 구현
- 딕셔너리
- 가상메모리 관리
- dfs
- 운영체제
- 코딩테스트
- level2
- dict
- python
- 힙
- N과M
- 브루트포스
- BOJ
- 그리디
- 파이썬
- 다이나믹 프로그래밍
- 프로그래머스
- 다익스트라
- 수학
- 스택
- BFS
- 가상메모리
- level0
- 백준
- level3
- DP
- programmers
- MYSQL
- Today
- Total
목록BOJ (48)
동캄의 코딩도장
https://www.acmicpc.net/problem/15654 15654번: N과 M (5) N개의 자연수와 자연수 M이 주어졌을 때, 아래 조건을 만족하는 길이가 M인 수열을 모두 구하는 프로그램을 작성하시오. N개의 자연수는 모두 다른 수이다. N개의 자연수 중에서 M개를 고른 수열 www.acmicpc.net #15654 n,m=map(int,input().split()) lst=list(map(int,input().split())) lst.sort() s=[] def dfs(): if len(s)==m: print(' '.join(map(str,s))) return for i in lst: if i in s : continue s.append(i) dfs() s.pop() dfs() lst를..
https://www.acmicpc.net/problem/15652 15652번: N과 M (4) 한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안되며, 각 수열은 공백으로 구분해서 출력해야 한다. 수열은 사전 순으로 증가하는 순서로 출력해 www.acmicpc.net #15652 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 len(s)==0: s.append(i) dfs() s.pop() elif len(s)!=0 and s[len(s)-1]
https://www.acmicpc.net/problem/15650 15650번: N과 M (2) 한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안되며, 각 수열은 공백으로 구분해서 출력해야 한다. 수열은 사전 순으로 증가하는 순서로 출력해 www.acmicpc.net #15650 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 len(s)==0: s.append(i) dfs() s.pop() elif len(s)!=0 and s[len(s)-1]
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를 이용하여 값을..