반응형 Programming456 [C/C++] 프로젝트 오일러 #115 Counting Block Combinations II 프로젝트 오일러 #115번 문제는 최소 길이가 M 이상인 연속된 빨간색 블록과 검은색 칸(구분자)을 사용하여, 일렬로 배치할 수 있는 경우의 수를 조사하는 문제입니다. 다음과 같은 조건을 갖습니다. 1. 줄의 길이(n): 특정 길이 n의 직선 위에 빨간색(R) 칸과 검은색(B) 칸을 배치합니다. 2. 빨간색 블록의 최소 길이(M): 하나 이상의 연속된 빨간 칸을 하나의 “빨간색 블록”이라 할 때, 이 블록 하나는 최소한 M개의 연속된 빨간 칸으로 이루어져야 합니다. 3. 블록 사이의 구분(검은 칸): 두 개 이상의 빨간색 블록 사이에는 최소한 하나 이상의 검은 칸이 있어야 합니다. 즉, 빨간색 블록이 서로 인접한 형태로 놓이는 것은 허용되지 않습니다. 4. 모든 가능한 배치의 수 계산: 위의 조건을 만족.. 2024. 12. 19. [C/C++] 프로젝트 오일러 #114 Counting Block Combinations I (조합) 프로젝트 오일러 114번 문제는 길이가 n인 일렬의 칸에 일정한 조건을 만족하도록 빨간 블록을 배치하는 방법의 수를 세는 것에 관한 문제입니다. 이 때 사용되는 빨간 블록은 최소 3칸 이상의 길이를 가져야 하며, 빨간 블록들 사이에는 적어도 하나 이상의 검은 칸이 존재해야 합니다. 또한, 빨간 블록을 전혀 놓지 않는 경우도 하나의 가능한 배치로 포함합니다.문제에서 정의하는 함수 f(n)은 길이가 n인 칸에 위와 같은 규칙을 적용했을 때 나올 수 있는 모든 가능한 배치의 수를 나타냅니다. 주어진 예시로, n=7일 때 f(7)의 값이 특정 수(17)로 제시되며, f(50)의 값도 매우 큰 수(16475640049)로 주어집니다. 문제는 이러한 함수 f(n)의 값을 확장해 나갈 때, f(n)이 1,000,00.. 2024. 12. 18. [C/C++] 프로젝트 오일러 #113 Non-bouncy Numbers(수학) Project Euler 문제 113번은 숫자가 “증가형(increasing)” 혹은 “감소형(decreasing)” 형태인 ‘비탄력적(non-bouncy)’ 수의 개수를 구하는 문제입니다. 이 문제의 핵심 개념을 다음과 같이 정리할 수 있습니다. 1. 증가하는 수(Increasing number): 왼쪽에서 오른쪽으로 읽을 때, 각 자리수가 이전 자리수보다 작아지지 않는(즉, 비내림(non-decreasing) 순서) 수를 말합니다. 예를 들어, 112233이나 8999는 모두 증가하는 수에 해당합니다. 2. 감소하는 수(Decreasing number): 왼쪽에서 오른쪽으로 읽을 때, 각 자리수가 이전 자리수보다 커지지 않는(즉, 비내림(non-increasing) 순서) 수를 의미합니다. 예를 들어.. 2024. 12. 13. [C/C++] 프로젝트 오일러 #112 Bouncy Numbers(단순반복) Project Euler 문제 112, “Bouncy Numbers”는 숫자의 특성을 분석하는 문제입니다. 여기서 “Bouncy Number”란 증가하는 숫자도 아니고 감소하는 숫자도 아닌 숫자를 의미합니다. 증가하는 숫자는 각 자릿수가 왼쪽에서 오른쪽으로 갈수록 같거나 커지는 숫자입니다. 예를 들어 123, 455, 789와 같은 숫자는 증가하는 숫자입니다. 반대로 감소하는 숫자는 각 자릿수가 왼쪽에서 오른쪽으로 갈수록 같거나 작아지는 숫자를 말합니다. 예를 들어 321, 876, 954와 같은 숫자는 감소하는 숫자입니다. 그러나 132와 155349 같은 숫자는 증가하거나 감소하는 패턴이 없으므로 Bouncy Number로 분류됩니다. 문제는 Bouncy Number의 비율이 특정 퍼센티지(예: 50.. 2024. 12. 9. [C/C++] 프로젝트 오일러 #111 Primes with Runs(히스토그램) 프로젝트 오일러 문제 111번, “Primes with Runs”는 소수와 숫자 패턴의 반복성을 중심으로 하는 문제입니다. 이 문제는 자리수가 m인 숫자 집합을 대상으로 합니다. 예를 들어 m이 4라면, 4자리 숫자인 1000에서 9999까지의 숫자를 다루게 됩니다.문제의 주요 관심사는 자리수가 m인 숫자 중에서 특정 숫자가 반복적으로 나타나는 패턴을 찾는 것입니다. 여기서 “반복”은 특정 숫자가 얼마나 많이 나타나는지를 의미합니다. 예를 들어, 4자리 숫자 3331에서는 숫자 3이 세 번 반복됩니다. 이러한 숫자 중에서도 소수인 숫자만을 대상으로 합니다. 소수란 1과 자기 자신만으로 나누어떨어지는 숫자이므로, 여기서 다루는 숫자가 소수인지 확인하는 과정이 필수적입니다.각 숫자 집합에 대해 가장 많이 반.. 2024. 12. 5. [C/C++] 프로젝트 오일러 #110 Diophantine Reciprocals II(우선순위큐) 이 문제는 #108 문제와는 아주 비슷합니다. https://sdev.tistory.com/1968 [C/C++] 프로젝트 오일러 #108 Diophantine Reciprocals I(소인수분해)프로젝트 오일러 문제 #108: Diophantine Reciprocals I는 다음과 같은 문제입니다:이 문제는 다음과 같은 형태의 Diophantine 방정식을 다룹니다:\[ \frac{1}{x} + \frac{1}{y} = \frac{1}{n} \] 여기서 x, y,sdev.tistory.com 요구하는 것도 비슷하지만, 문제 난이도는 #108이 30%로 책정되었지만, 이번 문제는 40%로 책정되어 있습니다. 다음과 같은 형태의 방정식을 고려합니다:\[ \frac{1}{x} + \frac{1}{y} =.. 2024. 12. 2. 이전 1 2 3 4 ··· 76 다음 728x90 반응형