반응형

다이나믹 프로그래밍 6

[백준 BOJ 15998번] 1, 2, 3 더하기 3 (C / C++ ) [DP, 다이나믹프로그래밍]

15988번: 1, 2, 3 더하기 3 (acmicpc.net) 시간 제한 메모리 제한 제출 정답 맞은 사람 정답 비율 1초(추가 시간 없음) 512 MB 10235 3788 2793 36.062% 더보기 백준 1, 2, 3 더하기 3 다이나믹프로그래밍 DP C언어 C++ 알고리즘 문제 정수 4를 1, 2, 3의 합으로 나타내는 방법은 총 7가지가 있다. 합을 나타낼 때는 수를 1개 이상 사용해야 한다. 1+1+1+1 1+1+2 1+2+1 2+1+1 2+2 1+3 3+1 정수 n이 주어졌을 때, n을 1, 2, 3의 합으로 나타내는 방법의 수를 구하는 프로그램을 작성하시오. 입력 첫째 줄에 테스트 케이스의 개수 T가 주어진다. 각 테스트 케이스는 한 줄로 이루어져 있고, 정수 n이 주어진다. n은 양수이..

백준 2021.03.19

[백준 BOJ 14495번] 피보나치 비스무리한 수열 (C / C++ ) [DP, 다이나믹 프로그래밍]

14495번: 피보나치 비스무리한 수열 (acmicpc.net) 시간 제한 메모리 제한 제출 정답 맞은 사람 정답 비율 2초 512MB 1865 1002 909 55.630% 문제 피보나치 비스무리한 수열은 f(n) = f(n-1) + f(n-3)인 수열이다. f(1) = f(2) = f(3) = 1이며 피보나치 비스무리한 수열을 나열하면 다음과 같다. 1, 1, 1, 2, 3, 4, 6, 9, 13, 19, ... 자연수 n을 입력받아 n번째 피보나치 비스무리한 수열을 구해보자! 입력 자연수 n(1n; for(int i=3;i

백준 2021.03.10

[백준 BOJ 15624번] 피보나치 수 7 (C / C++ ) [DP, 다이나믹 프로그래밍]

1564번: 피보나치 수 7 (acmicpc.net) 시간 제한 메모리 제한 제출 정답 맞은 사람 정답 비율 1초 (추가 시간 없음) 512MB 1488 731 595 57.322% 문제 피보나치 수는 0과 1로 시작한다. 0번째 피보나치 수는 0이고, 1번째 피보나치 수는 1이다. 그 다음 2번째 부터는 바로 앞 두 피보나치 수의 합이 된다. 이를 식으로 써보면 Fn = Fn-1 + Fn-2 (n ≥ 2)가 된다. n=17일때 까지 피보나치 수를 써보면 다음과 같다. 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987, 1597 n이 주어졌을 때, n번째 피보나치 수를 구하는 프로그램을 작성하시오. 입력 첫째 줄에 n이 주어진다. n은 1..

백준 2021.03.10

[백준 BOJ 1309번] 동물원 (C / C++ ) [DP, 다이나믹 프로그래밍]

1309번: 동물원 (acmicpc.net) 시간 제한 메모리 제한 제출 정답 맞은 사람 정답 비율 2초 128MB 13927 7115 5606 49.180% 문제 어떤 동물원에 가로로 두칸 세로로 N칸인 아래와 같은 우리가 있다. 이 동물원에는 사자들이 살고 있는데 사자들을 우리에 가둘 때, 가로로도 세로로도 붙어 있게 배치할 수는 없다. 이 동물원 조련사는 사자들의 배치 문제 때문에 골머리를 앓고 있다. 동물원 조련사의 머리가 아프지 않도록 우리가 2*N 배열에 사자를 배치하는 경우의 수가 몇 가지인지를 알아내는 프로그램을 작성해 주도록 하자. 사자를 한 마리도 배치하지 않는 경우도 하나의 경우의 수로 친다고 가정한다. 입력 첫째 줄에 우리의 크기 N(1≤N≤100,000)이 주어진다. 출력 첫째 줄..

백준 2021.03.08

[백준 BOJ 9655번] 돌 게임 (C++ ) [DP, 다이나믹 프로그래밍]

9655번: 돌 게임 (acmicpc.net) 시간 제한 메모리 제한 제출 정답 맞은 사람 정답 비율 1초 128MB 7847 5119 4513 66.731% 문제 돌 게임은 두 명이서 즐기는 재밌는 게임이다. 탁자 위에 돌 N개가 있다. 상근이와 창영이는 턴을 번갈아가면서 돌을 가져가며, 돌은 1개 또는 3개 가져갈 수 있다. 마지막 돌을 가져가는 사람이 게임을 이기게 된다. 두 사람이 완벽하게 게임을 했을 때, 이기는 사람을 구하는 프로그램을 작성하시오. 게임은 상근이가 먼저 시작한다. 입력 첫째 줄에 N이 주어진다. (1 ≤ N ≤ 1000) 출력 상근이가 게임을 이기면 SK를, 창영이가 게임을 이기면 CY을 출력한다. 예제 입력 1 5 예제 출력 1 SK 풀이 이게 DP로 풀 문제인가 싶다. 짝수..

백준 2021.03.06

[백준 BOJ 11727번] 2×n 타일링 2 (C++ )

문제 2×n 직사각형을 1×2, 2×1과 2×2 타일로 채우는 방법의 수를 구하는 프로그램을 작성하시오. 아래 그림은 2×17 직사각형을 채운 한가지 예이다. 입력 첫째 줄에 n이 주어진다. (1 ≤ n ≤ 1,000) 출력 첫째 줄에 2×n 크기의 직사각형을 채우는 방법의 수를 10,007로 나눈 나머지를 출력한다. 예제 입력 1 2 예제 출력 1 3 예제 입력 2 8 예제 출력 2 171 예제 입력 3 12 예제 출력 3 2731 풀이 간단한 다이나믹 프로그래밍 문제이다. 노가다를 해서 깂의 갯수를 세어보면 일정한 규칙이 보이는데, 현재 인덱스를 기준으로 -1인덱스의 값을 2로 곱해 준 후에 방금 곱해준 값에서 현재 인덱스가 짝수일 시 +1, 홀수일 시 -1을 각각 더해줌을 알 수 있다. 따라서 1 ..

백준 2021.02.17
반응형