일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 전처리
- 수달
- 역전파법
- 소수
- 히토요시
- 비샤몬당
- CNN
- bayesian
- 소인수분해
- A Neural Algorithm of Artistic Style
- Autoencoder
- 신경망
- deep learning
- Convolutional Neural Network
- 자전거 여행
- Gram matrix
- project euler
- 베이지안
- 딥러닝
- c#
- 합성곱 신경망
- mnist
- 역전파
- 냥코 센세
- SQL
- backpropagation
- 오일러 프로젝트
- 오토인코더
- Python
- neural network
- Today
- Total
목록Python (54)
통계, IT, AI
1. 개요 문제는 이곳에서 확인할 수 있다. 숫자 0, 1 그리고 2가 주어졌다고 하자. 이 숫자들로 만들 수 있는 순열을 크기 순으로 나열하면 012, 021, 102, 120, 201 그리고 210이다. 이때 이 순열의 3번째 값은 102이다. 이와 같은 방식으로 0부터 9까지의 숫자가 주어졌을 때 100만번째 값을 구하는 것이 목표이다. 2. 구현: ver 1.0 0, 1, 2가 주어지고 5번째 값을 구한다고 하자. 가장 앞에 오는 수는 2이다. 왜냐하면 0과 1이 가장 앞에 올때 순열의 가짓수는 각각 2이기 때문이다. 이후 남은 5-2-2=1번째 순열을 구하면 되므로 남은 0과 1이 선택된다. 이와 같은 방식을 구현한다. # -*- coding: utf-8 -*- import math as m d..
1. 개요 문제는 이곳에서 확인할 수 있다. 어떤 자연수 \(n\)이 있을 때, \(n\)을 제외하고 \(n\)을 나누어 떨어지게 하는 수들을 proper divisors라고 하자. proper divisors의 합이 \(n\)과 같을 때 \(n\)을 perfect number라고 한다. 그리고 proper divisors의 합이 \(n\)보다 작을 때 \(n\)을 deficient number, 클 때 abundant number라고 한다. 예를 들면, 28의 proper divisors는 1, 2, 4, 7, 14이며 그 합은 28이므로 28은 perfect number이다. 12의 proper divisors는 1, 2, 3, 4, 6이며 그 합은 16이므로 가장 작은 abundant number이..
1. 개요 문제는 이곳에서 확인할 수 있다. 자연수 \(n\)보다 작으면서 \(n\)을 나누어 떨어지게 하는 수를 proper divisor라고 하자. 그리고 \(d(n)\)을 \(n\)에 관한 proper divisors의 합이라고 정의하자. 이때 서로 다른 \(a\)와 \(b\)에 대하여 \(d(a)=b\), \(d(b)=a\)의 관계가 있을 때 \(a\)와 \(b\)를 amicable numbers라고 한다. 예를 들어, \(d(220)=284\), \(d(284)=220\)이므로 220과 284는 amicable numbers이다. 10000보다 작은 amicable numbers의 합을 구하는 것이 문제의 목표이다. 2. Ver 1.0\(d(n)\)을 정의할 때, 처음에는 소수를 사용하는 방법을..
1. 개요 풀이가 워낙 간단하여 19, 20번 두 문제를 푼다. 각각의 문제는 이곳과 이곳에서 확인할 수 있다. 19번 문제의 목표는 1901년 1월 1일부터 2000년 12월 31일에서 각 월의 1일이 일요일인 날의 수를 세는 것이다. 20번 문제는 \(100!\)의 각 자리의 수를 더하는 것이다. 2. Ver 1.0 # -*- coding: utf-8 -*- import datetime, math # 19. Counting Sundays print(sum(1 for y in range(1901, 2001) for m in range(1, 13) if datetime.date(y, m, 1).weekday() == 6 )) # 20. Factorial digit sum print(sum(int(i) f..
1. 개요 문제는 이곳에서 확인할 수 있다. 숫자를 삼각형으로 쌓아놓고 위 층으로부터 한가지 길을 선택해 내려가면서 누적합을 구하되 가장 큰 값을 구하는 것이 목표이다. 단, 길 선택은 두 갈래 중의 하나만 가능하다. 예를 들면, 아래의 숫자 더미에서 최대값은 3 + 7 + 4 + 9 = 23이다. 2. Ver 2.0모든 경우의 수를 찾는 것은 간단한 방법이지만 숫자더미가 커질수록 비효율적인 방법이다. 층수가 충분히 많으면 내가 눈을 감을 때까지도 답을 찾지 못할 수도 있다. 그래서 1주일 가량 다른 방법을 생각해봤지만 결국 답을 찾지 못하고 구글링을 하였다. 방법은 생각보다 훨씬 간단했다. 요는 위에서부터 내려가는 것이 아니라, 밑에서부터 올라가면서 최대값을 찾는 것 이었다. 즉, \(l\)번째 층의 ..
1. 개요 문제는 이곳에서 확인할 수 있다. 1부터 1000까지 영어로 세고 각 알파벳의 수를 더하면 된다. 몇가지 예외만 고려하면 쉽게 해결할 수 있다. 2. Ver 1.0 # -*- coding: utf-8 -*- data = dict() data[0] = "" data[1] = "ONE" data[2] = "TWO" data[3] = "THREE" data[4] = "FOUR" data[5] = "FIVE" data[6] = "SIX" data[7] = "SEVEN" data[8] = "EIGHT" data[9] = "NINE" data[10] = "TEN" data[11] = "ELEVEN" data[12] = "TWELVE" data[13] = "THIRTEEN" data[14] = "FOURT..
1. 개요 워낙 풀이가 간단하여 두개의 문제의 한개의 포스팅에 올린다. 15번 문제는 이곳에서 확인할 수 있고, 16번 문제는 이곳에서 확인할 수 있다. 15번 문제는 격자무늬에서 찾을 수 있는 길을 찾는 것이 목표인데, 조합을 이용하면 쉽게 해결할 수 있다. 즉, \({}_{40} \mathrm{ C }_{20}\)을 계산하면 된다.16번 문제는 2의 1000승을 구한 후 각 자리의 숫자를 더하면 된다. 2. Ver 1.0 파이선을 사용하여 쉽게 답을 구하자. # -*- coding: utf-8 -*- import math as m # 15. Lattice paths f = m.factorial print(f(40)/(f(20)**2)) # 16. Power digit sum print(sum([int..
1. 개요 문제는 이곳에서 확인할 수 있다.어떤 수열 \(a_n\)이 아래와 같은 일반항을 가진다고 하자. $$a_{n+1}= \begin{cases} a_{n}/2, & \text{if $n$ is even} \\ 3a_{n}+1, & \text{if $n$ is odd} \end{cases} $$예를 들어 \(a_1=13\)인 경우 다음과 같이 항의 길이가 10인 수열을 얻는다.$$13\rightarrow 40 \rightarrow 20 \rightarrow 10 \rightarrow 5 \rightarrow 16 \rightarrow 8 \rightarrow 4 \rightarrow 2 \rightarrow 1$$증명되진 않았지만 모든 양의 정수인 \(a_1\)은 반드시 1로 끝난다고 알려져 있다...
1. 개요 문제는 이곳에서 확인할 수 있다. 50자리수 100개를 더한 뒤 처음 10자리의 숫자를 찾는 것이 목표이다. 2. Ver 1.0 어떤 언어를 사용하느냐에 따라서 구현의 복잡성이 달라질 수 있다. 여기서는 간단하게 파이선을 이용하도록 하자. 파이선으로는 자료 입력 부분을 제외하면 단 한줄로 답을 구할 수 있다. # -*- coding: utf-8 -*- data = """37107287533902102798797998220837590246510135740250 46376937677490009712648124896970078050417018260538 74324986199524741059474233309513058123726617309629 9194221336357416157252243056330..
1. 들어가며코딩을 하다가 특정 순간에만 사용되고 이후로는 쓸 일이 없는 변수를 만들어야 했다. 상황을 간단하게 말하자면, 아래와 같은 dictionary에서 B,D,E에 해당하는 Value를 바꾸어야 했는데 B,D,E라는 정보는 더이상 사용되지 않았다. Dictionary weights = new Dictionary(); weights.Add("A", 75); weights.Add("B", 80); weights.Add("C", 67); weights.Add("D", 94); weights.Add("E", 78); weights.Add("F", 81); 2. 구현2.1. 최초 구현 처음에는 Key와 Value를 따로 선언하였다. 물론 문제 없이 컴파일이 되고 잘 돌아가지만 id와 w라는 변수는 이후로도..