본문 바로가기

분류 전체보기

(65)
[C++] 백준 2482 색상환 2482 색상환 2482번: 색상환 첫째 줄에 N색상환에서 어떤 인접한 두 색도 동시에 선택하지 않고 K개의 색을 고를 수 있는 경우의 수를 1,000,000,003 (10억 3) 으로 나눈 나머지를 출력한다. www.acmicpc.net C++ #include #include #include using namespace std; #define MOD 1000000003 int DP[1003][1003]; int main() { ios::sync_with_stdio(0); cin.tie(0); int n, k; cin >> n >> k; for (int i = 0; i
[C++] 백준 11054 가장 긴 바이토닉 부분 수열 11054 가장 긴 바이토닉 부분 수열 11054번: 가장 긴 바이토닉 부분 수열 첫째 줄에 수열 A의 크기 N이 주어지고, 둘째 줄에는 수열 A를 이루고 있는 Ai가 주어진다. (1 ≤ N ≤ 1,000, 1 ≤ Ai ≤ 1,000) www.acmicpc.net C++ #include #include #include using namespace std; vector per; int main() { ios::sync_with_stdio(0); cin.tie(0); int n, input; cin >> n; vector memo(n); // 거기까지의 최대 길이 vector memo2(n); // 거기서부터의 최대 길이 for (int i = 0; i > input; per...
[C++] 백준 1937 욕심쟁이 판다 1937 욕심쟁이 판다 1937번: 욕심쟁이 판다 n*n의 크기의 대나무 숲이 있다. 욕심쟁이 판다는 어떤 지역에서 대나무를 먹기 시작한다. 그리고 그 곳의 대나무를 다 먹어 치우면 상, 하, 좌, 우 중 한 곳으로 이동을 한다. 그리고 또 그곳에서 www.acmicpc.net C++ #include #include using namespace std; int dx[4] = {1, -1, 0, 0}; int dy[4] = {0, 0, 1, -1}; int n; int DAE[503][503]; // 대나무 숲의 정보 int DP[503][503]; // Dynamic Programming int DPP(int x, int y) { if (DP[x][y]) return DP[x][y]; DP[x][y] =..
[C++] 백준 11066 파일 합치기 11066 파일 합치기 11066번: 파일 합치기 문제 소설가인 김대전은 소설을 여러 장(chapter)으로 나누어 쓰는데, 각 장은 각각 다른 파일에 저장하곤 한다. 소설의 모든 장을 쓰고 나서는 각 장이 쓰여진 파일을 합쳐서 최종적으로 소설의 �� www.acmicpc.net C++ #include #include #include #define INF 987654321 using namespace std; typedef long long ll; int w[503]; int sum[503]; int DP[503][503]; int main() { ios_base::sync_with_stdio(0); cin.tie(0); int t; cin >> t; while(t--) { int k; cin >> k;..
[C++] 백준 1699 제곱수의 합 1699 제곱수의 합 1699번: 제곱수의 합 어떤 자연수 N은 그보다 작거나 같은 제곱수들의 합으로 나타낼 수 있다. 예를 들어 11=32+12+12(3개 항)이다. 이런 표현방법은 여러 가지가 될 수 있는데, 11의 경우 11=22+22+12+12+12(5개 항)도 가능하다 www.acmicpc.net C++ #include #include #include using namespace std; typedef long long ll; int DP[100003] = {0, }; int main() { ios_base::sync_with_stdio(0); cin.tie(0); int n; cin >> n; for(int t=1; t
[C++] 백준 1149 RGB거리 1149 RGB거리 1149번: RGB거리 첫째 줄에 집의 수 N(2 ≤ N ≤ 1,000)이 주어진다. 둘째 줄부터 N개의 줄에는 각 집을 빨강, 초록, 파랑으로 칠하는 비용이 1번 집부터 한 줄에 하나씩 주어진다. 집을 칠하는 비용은 1,000보다 작거나 www.acmicpc.net C++ #include #include using namespace std; int DP[1003][3] = {0,}; int RGB[1003][3] = {0,}; int main() { ios::sync_with_stdio(0); cin.tie(0); int n; cin >> n; for (int i = 1; i > RGB[i][j]; for (int i = 1; i
[C++] 백준 11049 행렬 곱셈 순서 11049 행렬 곱셈 순서 11049번: 행렬 곱셈 순서 첫째 줄에 입력으로 주어진 행렬을 곱하는데 필요한 곱셈 연산의 최솟값을 출력한다. 정답은 231-1 보다 작거나 같은 자연수이다. 또한, 최악의 순서로 연산해도 연산 횟수가 231-1보다 작거나 같� www.acmicpc.net DP[i][j]를 구간 [i, j]에서의 최소 행렬 곱셈 회수라 하면, DP[i][j] = k가 i부터 j까지 이동할 때 (DP[i][k] + DP[k+1][j] + row[i]*col[k]*col[j])의 최솟값이라 나타낼 수 있다. i ~ j까지의 거리 (볼 행렬의 개수)를 먼저 고정하고, k를 움직여가며 i, j 각각에 대한 DP[i][j] 값을 구하는 방식으로 풀었다. C++ #include #include #inc..
[C++] 백준 11053 가장 긴 증가하는 부분 순열 11053 가장 긴 증가하는 부분 순열 11053번: 가장 긴 증가하는 부분 수열 수열 A가 주어졌을 때, 가장 긴 증가하는 부분 수열을 구하는 프로그램을 작성하시오. 예를 들어, 수열 A = {10, 20, 10, 30, 20, 50} 인 경우에 가장 긴 증가하는 부분 수열은 A = {10, 20, 10, 30, 20, 50} 이 www.acmicpc.net C++ #include #include using namespace std; vector per; int main() { int n, input; cin >> n; vector memo(n); // 거기까지의 최대 길이 for (int i = 0; i > input; per.push_back(input); // 들어가..
2019.08.18 덕수궁 덕수궁 중화전의 야경
2019.06.16 한강공원 일대 마포구 - 강남구까지의 한강공원 자전거길
2019.06.15 신라호텔 석양과 어우러지는 남산 일대 풍경
2019.04.16 보문 호수 벚꽃 벚꽃잎이 흩날리던 날