Programming/Project Euler118 54. 프로젝트 오일러 #54 : 포커 승리 판정 이번 문제는 어렵다는 생각은 들지 않았지만, 상당히 귀찮은 문제이긴 합니다.프로젝트 오일러 사이트에서의 난이도는 10% 문제입니다. 고포류 게임을 만들어본 적은 없지만, 포커의 룰에 따라서 누가 이겼는지를 판정하는 것은 포커 게임에서 가장 중요한 부분입니다. 그 외의 것이야 인터페이스이니까요. 이번 문제는 상당히 깁니다.최종적인 이야기는 결국 주어진 카드를 보고서 첫번째 사용자가 몇번 이겼는 가를 판정하는 것입니다. 사실, 이런 판정시스템을 만드는 것이 단순히 노가다만은 아닙니다. 얼마나 더 효율적으로 판단할 수 있게 하는 것이 프로그램을 작성하는 사람에게는 고민이겠죠. 고포류 게임에서 노가다로 프로그램 짠다고 해서, 효율적 프로그램에 비해서 훨씬 더 느리다던지 하는 것은 아닙니다. 프로그램 코드 사이즈.. 2016. 6. 10. 프로젝트 오일러 #53 : 조합 선택 이번 문제는 간단한 문제입니다. 조합 공식만 알면 쉽게 문제를 풀 수 있습니다. n이 1부터 100까지 변할 때, 조합 숫자 nCr을 계산할 때, 1백만이 넘는 결과가 나오는 갯수를 적으면 됩니다.단순무식한 방법으로 하더라도, 총 10,100 번 조합 계산을 하면 됩니다. nCr=nCn−r이라는 사실을 알고 있다면, 그 절반으로 줄테고요. 대칭형인데, 단순증가 단순감소 패턴이라는 것을 아신다면, 더 횟수를 줄일 수 있습니다. 단, 조합을 계산하는 곱하기 횟수가 증가하니, 실제 곱하기 횟수로 따진다면, O(n3)정도의 시간 복잡도를 가집니다. n이 100정도이니, 시간이 아주 조금 더 걸리는 것 뿐이지, 계산 못 할 정도는 절대 아닙니다. 저는, 조금 특이한 방법.. 2016. 6. 9. [C/C++] 프로젝트 오일러 #52 : 순열 곱 52번 문제는 너무나도 유명한 문제여서, 문제를 보고서 프로그램 작성을 하지 않고도 답을 낼 수 있었습니다. 이 문제는 순환소수 중, 소수에 의한 문제입니다. 문제 자체는 어렵지 않으니까, 어떻게든 풀면 됩니다. 난이도 5% 문제입니다. 51번 문제가 난이도 15%로 잠깐 높아졌었지만요. 프로젝트 오일러 사이트의 문제는 다음과 같습니다. 125874와 같은 숫자는 2배를 하면 251748로 숫자의 위치만 바뀌어서 나타납니다. x, 2x, 3x, 4x, 5x, 6x 가 모두 같은 숫자들을 가지고 있는 가장 작은 숫자를 찾으세요. 이 문제를 단순무식법으로 풀려면, 자릿수의 숫자만 계산해서 같은 숫자가 나오는지 검사하면 됩니다. 그렇지만, 그렇게 하면 시간이 많이 걸립니다. 사실 요즘 컴퓨터에서는 .. 2016. 6. 9. [C/C++] 프로젝트 오일러 #51 : 소수 자릿수 대치 프로젝트 오일러 #51 문제는 처음으로 난이도 5%가 아닌 문제입니다.#1부터 #50까지의 문제들에 비해서 난이도가 좀 있습니다. 난이도가 15%로 설정되어 있습니다. 주어진 문제는 56xx3 과 같은 x로 비어진 숫자가 있는데, 이 x에 0~9까지 숫자를 넣었을 때, 소수는 몇개가 나오는 가입니다. 56003, 56113, 56223, 56333, 56443, 56553, 56663, 56773, 56883, 56993 이라는 10개의 숫자들을 만들 수가 있는데요. 이 중 소수는 7개나 됩니다. 이 때, 56003(이 그룹 중 가장 작은 수)는 소수가 7개가 되는 최소의 수입니다. 찾아야 하는 수는 소수가 8개가 되는 최소의 수입니다.문제를 적용하는 방법을 구상하는 것이 어렵지, 문제 자체는 짧은.. 2016. 6. 8. [C/C++] 프로젝트 오일러 #50 : 이어지는 소수들의 합 이번 문제는 난이도 자체는 그리 어렵지 않습니다. 프로젝트 오일러 사이트에서 주어진 난이도는 5%입니다. 저에게 있어서 이 문제 자체가 어렵다는 생각은 하지 않았습니다. 하지만 속도를 빠르게 하려다보니 많은 생각을 해야만 했습니다. 문제는 주어진 범위안의 연속된 소수의 합이 또다른 소수가 될 때, 주어진 범위안의 소수 갯수가 최대가 되는 소수를 찾는 것입니다. 처음에 도전한 방법은 단순무식한 방법이었습니다. 단순무식한 방법이라고 하지만, 나름대로 속도를 빨리 나오게 하려고 노력하였습니다. 아래 소스는 단순무식한 방법으로 짰을 때입니다. #define LIMIT 1000000void solve1(){ static unsigned primes[LIMIT/2]; unsigned pcoun.. 2016. 6. 5. [C/C++] 프로젝트 오일러 #49 : 소수 순열 프로젝트 오일러 #49 소수 순열 문제는 좀 복잡해보이기는 하지만, 실제 풀이과정은 단순한 문제입니다. 난이도도 5%로 "매우 쉬움"으로 분류되어 있습니다. 세개의 4자리 숫자는 숫자들의 순서만 다르면서 소수인 숫자들입니다. 예를 들어서 1487, 4817, 8147 세 숫자는 1, 4, 7, 8 의 4개의 숫자들을 순서만 달리하면서, 각각이 소수인 숫자들입니다. 이러한 조건을 만족하는 또다른 숫자 조합을 찾으라는 것이 이 문제입니다. (실제 모든 경우를 해도, 4자리 숫자는 예를 든 것과 여기서 원하는 답, 이렇게 두가지밖에 없습니다.) 다음 그림은 프로젝트 오일러 사이트에 있는 문제입니다. 알고리즘을 작성할 때, 4자리로 만드는 순열을 어떻게 만들것인가가 가장 중요했습니다. 모든 경우를 다 찾.. 2016. 6. 3. 이전 1 ··· 8 9 10 11 12 13 14 ··· 20 다음 728x90