본문 바로가기

Programming457

[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.
[C/C++] 프로젝트 오일러 #109 Darts 프로젝트 오일러 문제 #109: “다트판 점수 계산”이 문제는 다트 게임에서 점수를 계산하는 다양한 방법을 다루는 문제입니다. 다트 게임에서는 특정 규칙에 따라 점수를 계산하며, 이 문제에서는 가능한 점수 조합을 찾는 데 중점을 둡니다.문제 요약다트판에는 1부터 20까지의 숫자가 있으며, 각각의 숫자는 싱글, 더블, 트리플로 구분됩니다.• 싱글(Single): 점수가 그대로 계산됩니다. 예: 20 -> 20점• 더블(Double): 점수가 2배로 계산됩니다. 예: 20 -> 40점• 트리플(Triple): 점수가 3배로 계산됩니다. 예: 20 -> 60점또한, 다트판에는 불스아이(Bullseye)가 있으며, 이는:• 싱글 불(Single Bull): 25점• 더블 불(Double Bull): 50점입니다.. 2024. 12. 1.
[C/C++] 프로젝트 오일러 #108 Diophantine Reciprocals I(소인수분해) 프로젝트 오일러 문제 #108: Diophantine Reciprocals I는 다음과 같은 문제입니다:이 문제는 다음과 같은 형태의 Diophantine 방정식을 다룹니다:\[ \frac{1}{x} + \frac{1}{y} = \frac{1}{n} \] 여기서 x, y, n은 모두 양의 정수입니다. 위 식을 변형하면:\[ (x - n)(y - n) = n^2 \]이 방정식의 해 (x, y)의 개수를 세는 것이 문제의 핵심입니다. 특히, 이 문제는 주어진 n에 대해 위 식을 만족하는 서로 다른 해 쌍의 개수가 1000개 이상이 되는 가장 작은 n을 찾는 것입니다.해의 개수를 셀 때 (x, y) 와 (y, x)는 같은 해로 간주되므로, 해의 개수를 정확히 세는 것이 중요합니다.요약하면, 양의 정수 n 중에.. 2024. 11. 29.
[C/C++] 프로젝트 오일러 #107 Minimal Network(프림 알고리즘) Project Euler 107번 문제는 네트워크의 최소 비용 연결에 관한 문제입니다. 주어진 그래프는 여러 개의 노드(점)와 그 노드를 연결하는 에지(선)로 이루어져 있습니다. 각 에지는 비용(가중치)을 가지고 있으며, 이 그래프는 모든 노드가 연결되어 있는 상태입니다. 즉, 어느 노드에서든 다른 노드로 이동할 수 있는 경로가 반드시 존재합니다.문제의 목표는 주어진 그래프에서 가능한 최소 비용으로 모든 노드를 연결하는 것입니다. 이를 달성하기 위해 불필요한 에지를 제거해도 되며, 단 제거 후에도 모든 노드가 연결되어 있어야 합니다. 이러한 최소 비용의 네트워크는 ’최소 신장 트리(Minimum Spanning Tree, MST)’라고 불립니다.문제를 해결하려면 다음과 같은 과정이 필요합니다. 먼저, 원.. 2024. 11. 28.
[C/C++] 프로젝트 오일러 #106 Special Subset Sums: Meta-testing(점화식) Project Euler #106: Special Subset Sums: Meta-testing 문제는 주어진 집합에서 두 개의 부분집합을 비교할 때, 그 부분집합들이 특정 조건을 만족하는지를 검사하는 경우의 수를 구하는 문제입니다.문제를 간단히 설명하면,1. 집합: 크기 n 인 자연수 집합 \(  \{1, 2, 3, \dots, n\} \)가 주어진다.2. 부분집합 조건: 두 부분집합 A 와 B 가 다음 조건을 만족하는지 확인해야 한다:• \(  |A| = |B| \) (부분집합의 크기가 동일해야 한다.)• A와 B가 서로 다른 부분집합이어야 한다.• A와 B의 합을 비교하는 것이 의미 있으려면, A와 B를 “비교 가능한 형태”로 만들어야 한다.• “비교 가능”하다는 것은, 두 부분집합이 항목의 순서에.. 2024. 11. 27.
728x90