본문 바로가기

백준

(48)
[백준/c++] BOJ 15990 - 1, 2, 3 더하기 5 https://www.acmicpc.net/problem/15990 15990번: 1, 2, 3 더하기 5 각 테스트 케이스마다, n을 1, 2, 3의 합으로 나타내는 방법의 수를 1,000,000,009로 나눈 나머지를 출력한다. www.acmicpc.net 문제 설명 정수 n을 1, 2, 3의 합으로 나타낸다. 단, 같은 수를 두 번 이상 연속해서 사용하면 안 된다. 1, 2, 3의 합으로 나타내는 방법의 수를 1,000,000,009로 나눈 나머지를 출력한다. n (1 n; while (n--) { cin >> m; for (int i = 4; i
[백준/c++] BOJ 2670 - 연속부분최대곱 https://www.acmicpc.net/problem/2670 2670번: 연속부분최대곱 첫째 줄은 나열된 양의 실수들의 개수 N이 주어지고, 그 다음 줄부터 N개의 수가 한 줄에 하나씩 들어 있다. N은 10,000 이하의 자연수이다. 실수는 소수점 첫째자리까지 주어지며, 0.0보다 크거나 www.acmicpc.net 문제 설명 N개의 실수가 있을 때, 한 개 이상의 연속된 수들의 곱이 최대가 되는 부분을 찾아, 그 곱을 출력한다. N은 10000 이하의 자연수이며, 실수는 0.0보다 크거나 같고, 9.9보다 작거나 같다. 해결 dp[n] : n번까지의 연속곱의 최대곱 dp[1] = arr[1] dp[2] = arr[2] * dp[1] || arr[2] ... dp[n] = arr[n] * dp[n..
[백준/c++] BOJ 9461 - 파도반 수열 https://www.acmicpc.net/problem/9461 9461번: 파도반 수열 오른쪽 그림과 같이 삼각형이 나선 모양으로 놓여져 있다. 첫 삼각형은 정삼각형으로 변의 길이는 1이다. 그 다음에는 다음과 같은 과정으로 정삼각형을 계속 추가한다. 나선에서 가장 긴 변의 www.acmicpc.net 문제 설명 삼각형이 나선 모양으로 놓여져 있다. 첫 삼각형은 정삼각형으로 변의 길이는 1이다. 나선에서 가장 긴 변의 길이를 k라고 했을 때, 그 변에 길이가 k인 정삼각형을 추가한다. P(N)은 나선에 있는 정삼각형의 변의 길이이다. N이 주어졌을 때, P(N)을 구한다. (1 t; for (int i = 0; i > n; for (int j = 6; j
[백준/c++] BOJ 1003 - 피보나치 함수 https://www.acmicpc.net/problem/1003 1003번: 피보나치 함수 각 테스트 케이스마다 0이 출력되는 횟수와 1이 출력되는 횟수를 공백으로 구분해서 출력한다. www.acmicpc.net 문제 설명 다음 소스는 N번째 피보나치 수를 구하는 c++ 함수이다. int fibonacci(int n) { if (n == 0) { printf("0"); return 0; } else if (n == 1) { printf("1"); return 1; } else { return fibonacci(n‐1) + fibonacci(n‐2); } } fibonacci(N)을 호출했을 때, 0과 1이 각각 몇 번 출력되는지 구한다. 해결 a. n = 0 0: 1, 1: 0 b. n == 1 0: ..
[백준/c++] BOJ 11048 - 이동하기 https://www.acmicpc.net/problem/11048 11048번: 이동하기 준규는 N×M 크기의 미로에 갇혀있다. 미로는 1×1크기의 방으로 나누어져 있고, 각 방에는 사탕이 놓여져 있다. 미로의 가장 왼쪽 윗 방은 (1, 1)이고, 가장 오른쪽 아랫 방은 (N, M)이다. 준규는 www.acmicpc.net 문제 설명 NxM 크기의 미로의 각 방에 사탕이 놓여져 있다. 현재 (1, 1)에 있고, (N, M)으로 이동하려고 한다. 오른쪽, 아래쪽, 대각선 아래 오른쪽으로 이동할 수 있고, 각 방을 방문할 때마다 방에 놓여져 있는 사탕을 모두 가져갈 수 있다. (N, M)으로 이동할 때, 가져올 수 있는 사탕 개수의 최댓값을 구한다. N, M (1 n >> m; for (int i = 1;..
[백준/c++] BOJ 15988 - 1, 2, 3 더하기 3 https://www.acmicpc.net/problem/15988 15988번: 1, 2, 3 더하기 3 각 테스트 케이스마다, n을 1, 2, 3의 합으로 나타내는 방법의 수를 1,000,000,009로 나눈 나머지를 출력한다. www.acmicpc.net 문제 설명 정수 n이 주어졌을 때, n을 1, 2, 3의 합으로 나타내는 방법의 수를 구한다. 해결 '1'을 만드는 방법 a. 1 '2'를 만드는 방법 a. 1 + 1 b. 2 '3'을 만드는 방법 a. 1 + 1+ 1 b. 1 + 2 c. 2 + 1 d. 3 '4'를 만드는 방법 a. 1 + 1 + 1 + 1 b. 1 + 2 + 1 c. 2 + 1 + 1 d. 3 + 1 e. 1 + 1 + 2 f. 2 + 2 g. 1 + 3 '4'를 만드는 방법..
[백준/c++] BOJ 1912 - 연속합 https://www.acmicpc.net/problem/1912 1912번: 연속합 첫째 줄에 정수 n(1 ≤ n ≤ 100,000)이 주어지고 둘째 줄에는 n개의 정수로 이루어진 수열이 주어진다. 수는 -1,000보다 크거나 같고, 1,000보다 작거나 같은 정수이다. www.acmicpc.net 문제 설명 n개의 정수로 이루어진 임의의 수열이 주어진다. 연속된 몇 개의 수를 선택해서 구할 수 있는 합 중 가장 큰 합을 구한다. 해결 dp[n] : n번까지의 연속합의 최대합 dp[1] = arr[1] dp[2] = arr[2] + dp[1] || arr[2[ ... dp[n] = dp[n - 1] + arr[n] || arr[n] => n - 1번까지의 최댓값 + n번값 or n번 값 중 큰 것 코드..
[백준/c++] BOJ 2193 - 이친수 https://www.acmicpc.net/problem/2193 2193번: 이친수 0과 1로만 이루어진 수를 이진수라 한다. 이러한 이진수 중 특별한 성질을 갖는 것들이 있는데, 이들을 이친수(pinary number)라 한다. 이친수는 다음의 성질을 만족한다. 이친수는 0으로 시작하지 않 www.acmicpc.net 문제 설명 이진수 중 특별한 성질을 갖는 것들이 있는데, 이를 이친수라고 한다. 1. 이친수는 0으로 시작하지 않는다. 2. 이친수에서는 1이 두 번 연속으로 나타나지 않는다. N (1 n; dp[1][0] = 0, dp[1][1] = 1; for (int i = 2; i