일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- SQL
- 신경망
- 베이지안
- c#
- Gram matrix
- 전처리
- Convolutional Neural Network
- deep learning
- bayesian
- Python
- A Neural Algorithm of Artistic Style
- 비샤몬당
- backpropagation
- 오토인코더
- 합성곱 신경망
- 역전파법
- neural network
- 오일러 프로젝트
- CNN
- 히토요시
- mnist
- 역전파
- 딥러닝
- 자전거 여행
- 소수
- 소인수분해
- 냥코 센세
- 수달
- project euler
- Autoencoder
- Today
- Total
목록project euler (13)
통계, IT, AI
1. 개요 문제는 이곳에서 확인할 수 있다. 어떤 문서를 암호화하기 위하여 XOR 연산을 사용할 수 있다. 예를 들어 A는 아스키코드로 65인데 42와 XOR 연산을 하여 107로 암호화할 수 있다. 여기서 42는 키의 역할을 하며 107과 42를 XOR 연산을 하면 65로 복호화가 된다. 복호화가 불가능하게 하기 위해서는 암호화하는 문장과 같은 길이의 무작위 키로 암호화하면 된다. 하지만 이 방법은 실용적이지 못하기 때문에 기억하기 적당한 길이의 키를 전체 메시지에 대하여 돌아가며 적용한다. 문제에서 주어진 암호문의 키는 영어 소문자 3개라는 것이 알려져 있다. 그 키로 암호문을 해독하고 아스키코드 값의 합을 구하는 것이 문제의 목표이다. 단, 본래의 메시지는 일반적인 영어 문장이다. 2. 구현 26개..
1. 개요 문제는 이곳에서 확인할 수 있다. 아래와 같이 1부터 자연수를 반시계 방향으로 늘어놓자. 37 36 35 34 33 32 31 38 17 16 15 14 13 30 39 18 5 4 3 12 29 40 19 6 1 2 11 28 41 20 7 8 9 10 27 42 21 22 23 24 25 26 43 44 45 46 47 48 49 흥미롭게도 대각 방향에 있는 수 13개는 1을 제외하고 모두 홀수이다. 또한 그 수들 가운데 8개는 소수이다. 위의 예시에서 그 비율은 \(8/13 \approx 62\%\)이다. 처음으로 그 비율이 10%보다 작아졌을 때 변의 길이를 구하는 것이 문제의 목표이다. 2. 구현 중앙의 1을 \(n=1\)이라고 하면 오른쪽 아래 방향의 수는 모두 \((2n-1)^2\..
1. 개요 문제는 이곳에서 확인할 수 있다. \(\sqrt{2}\)는 다음과 같이 표현할 수 있다. $$\sqrt{2}=1+1/(2+1/(2+1/(2+\cdots)))= 1.414213\cdots $$ 4번째까지의 항을 살펴보면 다음과 같다. \(1 + 1/2 = 3/2 \) \(1 + 1/(2 + 1/2) = 7/5 \) \(1 + 1/(2 + 1/(2 + 1/2)) = 17/12 \) \(1 + 1/(2 + 1/(2 + 1/(2 + 1/2))) = 41/29 \) 8번째 항은 \(1393/985\)이며, 이때 처음으로 분자의 자리수가 분모의 자리수보다 크게 된다. 1,000번째 항 내에서 분자의 자리수가 분모의 자리수보다 큰 항의 수를 구하는 것이 문제의 목표이다. 2. 구현 각 항에서 1을 제외하고..
1. 55번 개요 문제는 이곳에서 확인할 수 있다. 47을 거꾸로 한 뒤 서로 더하면, 47+74=121이 되며 121은 회문자 palindrome이다. 349는 이 과정을 세번을 거치면 7337이 되어 회문자가 된다. 증명된 것은 아니지만, 어떤 숫자들은 거꾸로 한뒤 서로 더하는 과정을 아무리 거쳐도 회문자가 되지 않는다고 추측된다. 이러한 숫자들을 Lychrel 수라고 한다. 10,000보다 작은 Lycherel 수의 개수를 구하는 것이 문제의 목표이다. 단, 50번 안에 회문자가 되지 않으면 그 수는 Lycherel 수라고 가정한다.2. 55번 구현 # -*- coding: utf-8 -*- # Project Euler 55 def reverse_n(n): return int(str(n)[::-1]..
1. 개요 문제는 이곳에서 확인할 수 있다. 포커 게임에서 패의 순서는 다음과 같다. High Card: 모든 값이 다르고 적어도 하나의 모양이 다른 경우One Pair: 두 장이 같은 값을 가지는 경우 Two Pair: 두 개의 One Pair가 나오는 경우 Three of a Kind: 3장이 같은 값을 가지는 경우 Staight: 모든 카드의 값이 연속하는 경우 Flush: 모든 카드가 같은 모양인 경우 Full House: Three of a Kind와 One Pair가 나온 경우 Four of a Kind: 4장이 같은 값을 갖는 경우 Straight Flush: 모든 카드의 값이 연속하며 같은 모양인 경우 Royal Flush: Straight Flush이면서 가장 작은 값이 10인 경우 카드..
1. 개요 문제는 이곳에서 확인할 수 있다. 100만보다 큰 \(_nC_r\)의 개수를 구하는 것이 문제의 목표이다. 단, \(1
1. 개요 문제는 이곳에서 확인할 수 있다. \((x)\)를 양의 정수 \(x\)의 각 자리의 숫자라고 하자. \((x)=(2x)\)가 성립하는 \(x\) 중의 하나는 125874가 있다. \((x)=(2x)=(3x)=(4x)=(5x)=(6x)\)가 성립하는 최소 \(x\)를 찾는 것이 문제의 목표이다. 2. 구현 문제의 특성을 잘 살펴보면 확인해야 할 숫자를 많이 줄일 수 있다. 먼저 \((x)\) = \((6x)\)이므로 \(x\)는 반드시 1로 시작한다. 그렇지 않으면 자리수가 달리지기 때문이다. 또한 \(5x\)가 5의 배수이므로 마지막 수는 0 또는 5이다. 따라서 \((x)\)는 0 또는 5를 포함한다. 마찬가지로 \(2x\)가 2의 배수이므로 \((x)\)는 0, 2, 4, 6 또는 8을 포..
1. 개요 문제는 이곳에서 확인할 수 있다. 41은 다음과 같이 6개의 연속한 소수의 합으로 표현될 수 있다. $$41=2+3+5+7+11+13$$ 그리고 41은 100보다 작은 소수 중 가장 길게 연속하는 소수의 합이다. 이와 같은 특성을 가진 1000보다 작은 소는 953으로 21개의 연속하는 소수의 합이다. 문제의 목표는 가장 길게 연속하는 소수 들의 합으로 나타낼 수 있는 100만 이하의 소수를 찾는 것이다. 2. 구현 소수는 에라스토테네의 체를 사용한다. 연속하는 소수의 합을 구하면서 찾아야 하는 범위에 길이와 합을 반영하여 속도를 높인다. # -*- coding: utf-8 -*- lim = 1000000 is_prime = bytearray([1])*(lim+1) is_prime[0] = i..
1. 개요 문제는 이곳에서 확인할 수 있다. 1487, 4817, 8147은 3330씩 증가하는 수열인데 그 외에도 두가지 재미있는 특성이 있다. 첫번째는 각각이 모두 소수라는 점, 둘째는 각 숫자는 다른 숫자에서 배열을 바꿔 만들 수 있다는 점이다. 이와 같은 특성을 가진 4자리 숫자의 수열이 하나 더 존재한다. 그 수열을 연결한 12자리의 수를 찾는 것이 목표이다. 2. 구현 소수는 에라스토테네스의 체를 사용하여 구하며 숫자의 배열을 바꾸는 작업은 내장 모듈(itertools)를 사용한다. # -*- coding: utf-8 -*- import itertools import math lim = 10000 is_prime = bytearray([1])*(lim+1) is_prime[0] = is_pri..
1. 47번 개요 문제는 이곳에서 확인할 수 있다. 연속한 두개의 정수 중 두개의 서로 다른 소인수를 갖는 최초의 수는 \(14=2 \times 7\), \(15=3 \times 5\)이다. 연속한 세개의 정수 중 세개의 서로 다른 소인수를 갖는 최초의 수는 \(644=2^2\times 7 \times 23 \), \(645=3\times 5 \times 43 \), \(646=2 \times 7 \times 19 \)이다. 마찬가지로 연속한 네개의 정수 중 네개의 서로 다른소인수를 갖는 최초의 수에서 가장 처음 수를 구하는 것이 문제의 목표이다. 2. 47번 구현 에라스토테네스의 체를 사용하여 소수를 구하고 그것을 사용하여 소인수분해를 하는 방법을 사용한다. # -*- coding: utf-8 -*- ..