일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 29 | 30 | 31 |
- 비샤몬당
- Gram matrix
- 베이지안
- 합성곱 신경망
- neural network
- Python
- backpropagation
- project euler
- 냥코 센세
- A Neural Algorithm of Artistic Style
- 전처리
- 수달
- 히토요시
- 역전파법
- deep learning
- bayesian
- Convolutional Neural Network
- 소인수분해
- 딥러닝
- 오토인코더
- 자전거 여행
- 소수
- 오일러 프로젝트
- 역전파
- mnist
- SQL
- Autoencoder
- CNN
- 신경망
- c#
- Today
- Total
목록IT/PROJECT_EULER (60)
통계, IT, AI
1. 개요 문제는 이곳에서 확인할 수 있다. \(n\)번째 triangle number는 \(t_n=n(n+1)/2\)으로 정의된다. 그리고 어떤 단어의 각 알파벳의 순서의 합이 triangle number일때 그 단어를 triangle word라고 한다. 예를 들어 SKY의 각 알파벳의 순서의 합은 19 + 11 + 25 = 55=\(t_{10}\)이므로 SKY는 triangle word이다. 주어진 텍스트 파일에서 triangle word의 개수를 찾는 것이 목표이다. 2. 구현 어떤 수가 \(K\)가 triangle number인지 파악하기 위해서는 \(K=n(n+1)/2\)의 해 \(n\)이 정수인지 확인하면 된다. 이때, round error 등을 방지하기 위하여 sqrt 함수를 사용하지 않고 ..
1. 개요 문제는 이곳에서 확인할 수 있다. 어떤 수의 각 자리수가 1부터 \(n\)까지의 정수가 한번만 등장할 때 이 숫자를 \(n\) pandigital이라고 한다. 예를 들어 2143은 4 pandigital인데 소수이기도 하다. 이와 같이 pandigital이면서 소수인 \(n\) panditial 중 가장 큰 수를 구하는 것이 문제의 목표이다. 2. 구현 \(n\) pandigital의 정의상 확인해야 할 가장 큰 수는 987654321이다. 그런데 9 pandigital과 8 pandigital 각각은 그 자리 수의 합이 3의 배수이기 때문에 소수가 아니다. 따라서 7654321부터 문제의 조건을 확인하면 된다. 이를 이용하여 구현한다. # -*- coding: utf-8 -*- import ..
1. 개요 문제는 이곳에서 확인할 수 있다. 순환하지 않는 무한소수를 만드는 방법 중에 \(0.1234567891011\cdots\)과 같이 양의 정수를 무한히 붙여나가는 방법이 있다. \(d_n\)을 이 소수의 \(n\)번째 수라고 하자. 예를 들어 \(d_{12}=1\)이다. \(d_1 \times d_{10} \times d_{100} \times d_{1000} \times d_{10000} \times d_{100000} \times d_{1000000}\)을 구하는 것이 문제의 목표이다. 2. 구현 가장 간단한 방법은 \(i=1\)부터 적당히 큰 \(i\)까지 한번에 연결한 후 \(d_n\)을 찾는 것이다. 하지만 그 방법은 불필요한 자원의 낭비가 있으므로 \(i\)를 순차적으로 늘려가면서 \..
1. 개요 문제는 이곳에서 확인할 수 있다. 어떤 직사각형의 둘레의 길이가 \(p\)이며 각 변의 길이를 \(a, b, c\)라고 하자. 단, 모든 길이는 정수이며 \(a
1. 개요 문제는 이곳에서 확인할 수 있다. 192를 1, 2 그리고 3과 곱하면 각각 192, 384, 567이고 이 숫자들을 순서대로 연결하면 192384567이 된다. 192384567는 1부터 9까지의 숫자가 한번씩만 나오는 pandigital이며 이 숫자를 192, (1,2,3)으로 표현하자. 이와 같은 방식으로 918273645는 9, (1,2,3,4,5)로 표현할 수 있다. 1부터 9까지의 pandigital 중에 \(x\), \((1,2,\dots, n)\)으로 표현할 수 있는 가장 큰 수를 구하는 것이 목표이다. 단, \(n>1\)이다. 2. 구현 \(x\)에는 하한선과 상한선이 존재한다. 하한선은 1이며, \(n\)은 1보다 큰 정수이므로 상한선은 4자리 숫자이다. # -*- codin..
1. 개요 문제는 이곳에서 확인할 수 있다. 3797은 재미있는 수인데, 그 자체로 소수일 뿐만 아니라 왼쪽 또는 오른쪽으로 한자리씩 지워나가도 모두 소수이다. 즉, 왼쪽으로 한자리씩 지워나갈 때 각각 379, 37, 3이 되는데 모두 소수이다. 마찬가지로 오른쪽으로 지워나갈 때 각각 797, 97, 7이되며 모두 소수이다. 이와 같은 특성을 지닌 소수를 truncatable prime이라고 하며 11개만 존재한다고 한다. truncatable prime의 합을 구하는 것이 목표이다. 단, 2, 3, 5, 7, 9는 truncatable prime가 아니다. 2. 구현 ver 1.0 에라스토테네스의 체를 사용하여 소수를 찾는다. # -*- coding: utf-8 -*- import math class ..
1. 개요 문제는 이곳에서 확인할 수 있다. 어떤 문자나 숫자의 역순이 원래의 것과 같다면 그 문자나 숫자를 palindrome이라고 한다. 585는 특이한 성질을 지니고 있는데 585와 그것의 2진수가 모두 palindrome이기 때문이다. 이와 같은 성질을 지닌 1,000,000 이하의 숫자의 합을 구하는 것이 문제의 목표이다. 2. 구현 어떤 수의 palindrome을 구하는 방법에는 여러가지가 있는데, 여기서는 나눗셈을 이용한 방법을 사용한다. 예를 들어, 115를 10으로 나누면 11의 몫과 5의 나머지가 나온다. 5에 10을 곱하여 이를 결과라고 하자. 11을 10으로 나누면 몫 1과 나머지 1이 나온다. 앞서 구한 결과에 10을 곱한 후 나머지 1에 10을 곱하여 결과에 더한 후 몫 1을 거..
1. 개요 문제는 이곳에서 확인할 수 있다. 197은 특이한 소수인데, 각 자리의 수를 순환시켜도 모두 소수이기 때문이다. 즉, 971, 719 모두 소수이다. 이와 같은 특성을 보이는 1,000,000 보다 작은 소수의 개수를 구하는 것이 목표이다. 단, 중복을 허용한다. 즉, 197, 971 그리고 719는 한가지 소수를 순환하여 만들 수 있지만 따로 센다. 2. 구현 ver 1.0 먼저 100만 이하의 소수를 에라스토테네스의 체를 이용하여 구한다. 이후 각 소수를 순환시키면서 그 수가 소수인지 확인한다. # -*- coding: utf-8 -*- import math as m # 1. Find primes lim = 1000001 prime_candidate = list(range(2, lim)) ..
1. 개요문제는 이곳에서 확인할 수 있다. 어떤 수는 각 자리의 factorial의 합으로 나타낼 수 있다. 예를 들면, \(145\)는 \(1!+4!+5!\)와 같다. 이러한 특징을 갖는 모든 수의 합을 구하는 것이 목표이다. 2. 구현 문제에 조건에 의하여 검사해야 할 숫자에는 상한선이 있다. 즉, \(n\)자리 숫자 중 가장 작은 수인 \(10^{n-1}\)이 \(n\)자리 숫자로 만들 수 있는 가장 큰 값인 \(9!n\)보다 작은 경우만 검사하면 된다. # -*- coding: utf-8 -*- import math as m n = 1 fact_9 = m.factorial(9) while 10**(n-1) < fact_9*n: n += 1 answer = 0 for i in range(10, fa..
1. 개요문제는 이곳에서 확인할 수 있다. \(49/98\)은 흥미로운 분수인데, 분자와 분모에 포함된 같은 수 9를 지우면 본래의 값과 같기 때문이다. 이와 같은 특성을 보이는 분수를 찾아 곱하고 약분한 후 분모의 값을 구하는 것이 목표이다. 단, 분자와 분모가 각각 두자리 수여야 하며 분수는 1보다 작아야 한다. 그리고 공통된 수는 0이 아니어야 한다. 이러한 특성을 보이는 분수는 4개가 있다고 한다. 2. 구현십의 자리가 \(a\), 일의 자리가 \(b\)인 어떤 두자리 수를 간략하게 \(ab\)로 나타내자. 분자와 분모에 공통적으로 포함된 같은 수를 \(d\)라고 하면 확인해야 할 분수의 형태는 \(da/db\), \(ad/db\), \(da/bd\), \(ad/bd\)의 4가지 밖에 없다. 또한..