다이나믹 프로그래밍32 [1965] 상자넣기 [C] 풀이 "백준 11053 가장 긴 증가하는 부분 수열" 문제와 동일하다. 소스코드 #include int main(){ int N, max = 0, length; scanf("%d", &N); int arr[N], dp[N]; for (int i = 0; i < N; i++){ scanf("%d", &arr[i]); length = 0; for (int j = 0; j < i; j++) if (arr[j] < arr[i]) length < dp[j] && (length = dp[j]); dp[i] = length + 1; max < dp[i] && (max = dp[i]); } printf("%d", max); } 출처 1965번: 상자넣기 정육면체 모양의 상자가 일렬로 늘어서 있다. 상자마다 크기가 주어.. 2021. 7. 28. [백준 2839] 설탕 배달 [C] 풀이 5kg 봉지를 최대한 많이 들때, 배달하는 봉지의 개수가 최소인점을 이용해 풀이했다. 입력받은 N을 5(kg)로 나누었을 때 나머지가 0이면 몫이 봉지의 개수이다. 나머지가 0이 아니라면, 몫(cnt)을 한 개씩 줄이고, 3(kg)봉지를 몇개를 추가해야 알맞게 배달할 수 있는지 계산한다. 만약, 나누어 떨어지지 않는다면 cnt는 -1로 감소하며, -1을 출력할 것이다. 소스코드 #include int main() { int N, cnt = 0; scanf("%d", &N); cnt = N / 5; if (N % 5) for (; cnt >= 0; cnt--) if ((N - 5 * cnt) % 3 == 0) { cnt += (N - 5*cnt) / 3; break; } printf("%d\n", c.. 2021. 7. 25. 이전 1 ··· 3 4 5 6 다음