다이나믹 프로그래밍
-
[Baekjoon Online Judge] 10870번: 피보나치 수 5문제 풀이/Baekjoon Online Judge 2021. 2. 6. 16:21
10870번: 피보나치 수 5 피보나치 수는 0과 1로 시작한다. 0번째 피보나치 수는 0이고, 1번째 피보나치 수는 1이다. 그 다음 2번째 부터는 바로 앞 두 피보나치 수의 합이 된다. 이를 식으로 써보면 Fn = Fn-1 + Fn-2 (n ≥ 2)가 www.acmicpc.net 요구사항 - 피보나치 수는 0과 1로 시작한다. 0번째 피보나치 수는 0이고, 1번째 피보나치 수는 1이다. 그 다음 2번째 부터는 바로 앞 두 피보나치 수의 합이 된다. - 이를 식으로 써보면 Fn = Fn-1 + Fn-2 (n ≥ 2)가 된다. 입력 - 첫째 줄에 n이 주어진다. n은 20보다 작거나 같은 자연수 또는 0이다. 출력 - 첫째 줄에 n번째 피보나치 수를 출력한다. import java.io.BufferedR..
-
[Baekjoon Online Judge] 1912번: 연속합문제 풀이/Baekjoon Online Judge 2021. 2. 6. 16:10
1912번: 연속합 첫째 줄에 정수 n(1 ≤ n ≤ 100,000)이 주어지고 둘째 줄에는 n개의 정수로 이루어진 수열이 주어진다. 수는 -1,000보다 크거나 같고, 1,000보다 작거나 같은 정수이다. www.acmicpc.net 요구사항 - n개의 정수로 이루어진 임의의 수열이 주어진다. 우리는 이 중 연속된 몇 개의 수를 선택해서 구할 수 있는 합 중 가장 큰 합을 구하려고 한다. 단, 수는 한 개 이상 선택해야 한다. 입력 - 첫째 줄에 정수 n(1 ≤ n ≤ 100,000)이 주어지고 둘째 줄에는 n개의 정수로 이루어진 수열이 주어진다. 수는 -1,000보다 크거나 같고, 1,000보다 작거나 같은 정수이다. 출력 - 첫째 줄에 답을 출력한다. n개의 정수로 이루어진 임의의 수열 중 연속 된..
-
[Baekjoon Online Judge] 11053번: 가장 긴 증가하는 부분 수열문제 풀이/Baekjoon Online Judge 2021. 2. 6. 14:57
11053번: 가장 긴 증가하는 부분 수열 수열 A가 주어졌을 때, 가장 긴 증가하는 부분 수열을 구하는 프로그램을 작성하시오. 예를 들어, 수열 A = {10, 20, 10, 30, 20, 50} 인 경우에 가장 긴 증가하는 부분 수열은 A = {10, 20, 10, 30, 20, 50} 이 www.acmicpc.net 요구사항 - 수열 A가 주어졌을 때, 가장 긴 증가하는 부분 수열을 구한다. 입력 - 첫째 줄에 수열 A의 크기 N (1 ≤ N ≤ 1,000)이 주어진다. - 둘째 줄에는 수열 A를 이루고 있는 Ai가 주어진다. (1 ≤ Ai ≤ 1,000) 출력 - 첫째 줄에 수열 A의 가장 긴 증가하는 부분 수열의 길이를 출력한다. 수열의 각 항목을 비교하며, 해당 자리 까지 가장 긴 증가하는 부..
-
[Baekjoon Online Judge] 2193번: 이친수문제 풀이/Baekjoon Online Judge 2021. 2. 2. 21:57
2193번: 이친수 0과 1로만 이루어진 수를 이진수라 한다. 이러한 이진수 중 특별한 성질을 갖는 것들이 있는데, 이들을 이친수(pinary number)라 한다. 이친수는 다음의 성질을 만족한다. 이친수는 0으로 시작하지 않 www.acmicpc.net 요구사항 - 0과 1로만 이루어진 수를 이진수라 한다. 이러한 이진수 중 특별한 성질을 갖는 것들이 있는데, 이들을 이친수라 한다. - 이친수는 0으로 시작하지 않는다. - 이친수는 1이 두 번 연속 나타나지 않는다. 즉, 11을 부분 문자열로 갖지 않는다. 입력 - 첫째 줄에 N이 주어진다. N(1 ≤ N ≤ 90) 출력 - 첫째 줄에 N자리 이친수의 개수를 출력한다. 우선 간단한 규칙을 찾기 위해서 N의 범위에 맞춰 만족하는 이친수의 개수를 세보았..
-
[Baekjoon Online Judge] 2156번: 포도주 시식문제 풀이/Baekjoon Online Judge 2021. 2. 2. 21:38
2156번: 포도주 시식 효주는 포도주 시식회에 갔다. 그 곳에 갔더니, 테이블 위에 다양한 포도주가 들어있는 포도주 잔이 일렬로 놓여 있었다. 효주는 포도주 시식을 하려고 하는데, 여기에는 다음과 같은 두 가지 규 www.acmicpc.net 요구사항 - 테이블 위에 다양한 포도주가 들어 있는 포도주 잔이 일렬로 놓여 있었다. 포도주 시식을 위해서는 두 가지 규칙이 있다. 1. 포도주 잔을 선택하면 그 잔을 들어있는 포도주는 모두 마셔야 하고, 마신 후에는 원래 위치에 다시 놓아야 한다. 2. 연속으로 놓여 있는 3잔을 모두 마실 수는 없다. - 각 포도주 잔에 들어 있는 포도주의 양이 주어졌을 때, 가장 많은 포도주를 마실 수 있도록 작성한다. 입력 - 첫째 줄에 포도주 잔의 개수 n이 주어진다. (..
-
[Baekjoon Online Judge] 2748번: 피보나치 수 2문제 풀이/Baekjoon Online Judge 2021. 2. 1. 21:23
2748번: 피보나치 수 2 피보나치 수는 0과 1로 시작한다. 0번째 피보나치 수는 0이고, 1번째 피보나치 수는 1이다. 그 다음 2번째 부터는 바로 앞 두 피보나치 수의 합이 된다. 이를 식으로 써보면 Fn = Fn-1 + Fn-2 (n ≥ 2)가 www.acmicpc.net 요구사항 - 피보나치 수는 0과 1로 시작한다. 0 번째 피보나치 수는 0이고, 1번째 피보나치 수는 1이다. 그 다음 2번째 부터는 바로 앞 두 피보나치 수의 합이다. 입력 - 첫째 줄에 n이 주어진다. n은 90보다 작거나 같은 자연수이다. 출력 - 첫째 줄에 n번째 피보나치 수를 출력한다. import java.io.BufferedReader; import java.io.BufferedWriter; import java...
-
[Baekjoon Online Judge] 1932번: 정수 삼각형문제 풀이/Baekjoon Online Judge 2021. 2. 1. 11:21
1932번: 정수 삼각형 첫째 줄에 삼각형의 크기 n(1 ≤ n ≤ 500)이 주어지고, 둘째 줄부터 n+1번째 줄까지 정수 삼각형이 주어진다. www.acmicpc.net 요구사항 - 맨 위층 시작해서 아래에 있는 수 중 하나를 선택하여 아래층으로 내려올 때, 이제까지 선택된 수의 합이 최대가 되는 경로를 구하는 프로그램을 작성한다. 아래층에 있는 수는 현재 층에서 선택된 수의 대각선 왼쪽 또는 대각선 오른쪽에 있는 것 중에서만 선택할 수 있다. 입력 - 첫째 줄에 삼각형의 크기 n(1 ≤ n ≤ 500)이 주어지고, 둘째 줄부터 n+1번째 줄까지 정수 삼각형이 주어진다. 출력 - 첫째 줄에 합이 최대가 되는 경로에 있는 수의 합을 출력한다. 상각형의 밑단에서 부터 dp 테이블을 채우고, 그중에 최대값..
-
[Baekjoon Online Judge] 2579번: 계단 오르기문제 풀이/Baekjoon Online Judge 2021. 1. 30. 18:07
2579번: 계단 오르기 계단 오르기 게임은 계단 아래 시작점부터 계단 꼭대기에 위치한 도착점까지 가는 게임이다. 과 같이 각각의 계단에는 일정한 점수가 쓰여 있는데 계단을 밟으면 그 계단에 쓰여 있는 점 www.acmicpc.net 요구사항 - 계단 오르는 데는 다음과 같은 규칙이 있다. - 계단은 한 번에 한 계단씩 또는 두 계단씩 오를 수 있다. 즉, 한 계단을 밝으면서 이어서 다음 계단이나, 다음 다음 계단으로 오를 수 있다. - 연속된 세 개의 계단을 모두 밟아서는 안 된다. 단, 시작점은 계단에 포함되지 않는다. - 마지막 도착 계단은 반드시 밟아야 한다. - 각 계단에 쓰여 있는 점수가 주어질 때 이 게임에서 얻을 수 있는 총 점수의 최대값을 구한다. 입력 - 입력의 첫째 줄에 계단의 개수가..