일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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
- 소인수분해
- A Neural Algorithm of Artistic Style
- 비샤몬당
- 신경망
- 오일러 프로젝트
- neural network
- 역전파법
- Python
- 냥코 센세
- 전처리
- 소수
- CNN
- Convolutional Neural Network
- 역전파
- 딥러닝
- c#
- Autoencoder
- bayesian
- deep learning
- SQL
- 베이지안
- 합성곱 신경망
- project euler
- 자전거 여행
- backpropagation
- 히토요시
- 오토인코더
- mnist
- 수달
- Today
- Total
목록IT (69)
통계, IT, AI
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가지 밖에 없다. 또한..
1. 개요 문제는 이곳에서 확인할 수 있다. 7254는 39와 186의 곱으로 나타낼 수 있다. 즉 \(39 \times 186=7254\)이다. 이 수식에는 1부터 9까지의 숫자가 한번씩만 사용되었다. 7254와 같이, 1부터 9까지의 숫자를 한번씩만 사용하여 곱의 형태로 나타낼 수 있는 모든 숫자의 합을 구하는 것이 목표이다. 2. 구현 문제의 조건에 맞는 곱의 형태는 두가지 밖에 없다. 즉, 한자리 숫자와 네자리 숫자를 곱하여 네자리 숫자를 만드는 것과 두자리 숫자와 세자리 숫자를 곱하여 네자리 숫자를 만드는 경우 이외에는 문제의 조건에 맞지 않는다. 이를 이용하여 답을 구하자. # -*- coding: utf-8 -*- answer = [] # CASE 1: 1-digit multiply 4-di..
1. 개요문제는 이곳에서 확인할 수 있다. 1, 2, 5, 10, 20, 50, 100 그리고 200을 사용하여 200을 만드는 방법의 수를 구하는 것이 목표이다. 이 문제는 재귀함수를 사용하여 간단하게 해결할 수 있다. 즉, 200에서 100을 빼고 나면, 문제는 100을 만드는 방법의 수를 구하는 것으로 변한다. 2. 구현: ver 1.0재귀함수를 이용하여 구현한다. 하지만 이 방법은 그다지 효율적이진 않은데, 만약 200이 아니라 400을 구하라고 해도 생각보다 시간이 오래 걸린다. 사람들의 아이디어를 참고하여 memoization을 사용하려고 했지만 아둔하기 짝이 없어 결국 이해하지 못했다. # -*- coding: utf-8 -*- import numpy as np coins = [200, 10..
1. 개요문제는 이곳에서 확인할 수 있다. \(1634\)는 각 자리수의 4승의 합과 같다. 즉, \(1634=1^4+6^4+3^4+4^4\)이다. 이와 같이, 각 자리수의 5승의 합과 같은 모든 숫자의 합을 구하는 것이 목표이다. 단, 1은 합이 아니므로 제외한다.2. 구현: ver 1.0무한히 많은 숫자에 대해서 이를 테스트할 수는 없으므로 상한선을 찾아야 한다. \(n\)자리의 수 \(d\)가 있다고 하자. \(d\)의 최소값은 \(10^{n-1}\)이며, 최대값은 \(10^n-1\)이다. 그리고 \(d\)의 각 자리수의 5승의 합의 최대값은 \(9^5n\)이다. 따라서 \(10^{n-1}>9^5n\)를 만족하는 \(n\)부터는 확인할 필요가 없다. 사실 \(9^5\times 7=59049 \tim..
1. 개요 문제는 이곳에서 확인할 수 있다. 정수 \(a\in[2,100], b\in[2,100]\)에 대하여 \(a^b\)의 개수를 세는 것이 목표이다. 단, 중복은 제외한다. 2. 구현: ver 1.0loop를 이용하여 구현하되 overflow를 방지하기 위하여 Decimal 내장 모듈을 사용한다. # -*- coding: utf-8 -*- import decimal as d term_list = [] for a in range(2, 101): for b in range(2,101): term_list.append(d.Decimal(a) ** d.Decimal(b)) print(len(set(term_list))) 답은 9183이다.
1. 개요문제는 이곳에서 확인할 수 있다. 1부터 시계 방향으로 늘어놓은 뒤 대각선에 있는 숫자들의 합을 구할 수 있다. 아래의 예는 5행 5열의 숫자더미이며 대각선의 숫자의 합은 101이다. 1001행 1001열의 숫자더미에서 대각선의 숫자의 합을 구하는 것이 목표이다. 2. 구현: ver 1.0일반항을 구하여 문제를 해결하자. 1부터 시작하여 오른쪽에 존재하는 숫자들의 개수를 층이라고 정의하자. 예를 들면, 그림 1은 3층이다. 그러면 오른쪽 대각선의 있는 숫자는 층수 번째 홀수의 제곱임을 알 수 있고 이를 이용하여 일반항을 구할 수 있다. # -*- coding: utf-8 -*- n = 500 print(n*(8*(n+1)*(2*n+1)//3+2*n+6)+1) 답음 669171001이다.
1. 들어가며 C#에서 UI를 개발하면서 이벤트가 무엇인지 고민하게 되었다. 즉, Visual Studio에서 이벤트 처리를 잘 지원하는 덕분에 아무 생각없이 해왔는데 좀 더 복잡한 것을 하려고 하니 이벤트를 잘 모른다는 것을 알게 된 것이다. 이번을 기회로 이벤트가 무엇인지 간단하게 정리하려고 한다. 2. 이벤트의 개념 아래는 MSDN에 나오는 간단한 UI이다. 노란 패널에 무엇인가를 쓸 수 있고 Clear 버튼을 누르면 노란색 부분에 써져 있는 것이 지워진다. 이를 구현하기 위해서는 Clear 버튼이 눌리는 사건이 발생하면 그 정보를 패널에 전달해 주는 것이 필요한데, 그것이 이벤트이다. 즉, 이벤트는 한 클래스에서 어떤 사건이 발생하면 그 정보를 다른 클래스로 넘기는 방법이다. UI를 구성할 때 자..