일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- Gram matrix
- 자전거 여행
- 합성곱 신경망
- neural network
- 소인수분해
- 소수
- 딥러닝
- 수달
- 오일러 프로젝트
- backpropagation
- Python
- CNN
- 전처리
- 역전파
- Autoencoder
- deep learning
- SQL
- 역전파법
- A Neural Algorithm of Artistic Style
- 오토인코더
- 비샤몬당
- Convolutional Neural Network
- c#
- 베이지안
- 신경망
- 히토요시
- bayesian
- mnist
- project euler
- 냥코 센세
- Today
- Total
목록분류 전체보기 (94)
통계, IT, AI
1. 개요 문제는 이곳에서 확인할 수 있다. 어떤 숫자 더미에서 인접한 13개의 숫자들의 곱의 최대값을 찾는 것이 목적이다. 2. Ver 1.0 여려운 문제는 아니었지만 생각보다 시간이 오래 걸렸다. 로직은 옳은 것 같은데 계속 답이 틀렸기 때문이다. 알고보니 인접한 숫자들을 곱할 때 그 결과를 int로 지정한 것이 잘못이었다. 그 곱이 int가 처리할 수 있는 범위를 넘어섰기 때문이다. 정수라고 하면 흔히 int로 선언하곤 했고 여기서 문제가 생긴 적이 없어서 쉽게 발견하지 못했다. int 대신 ulong을 사용하여 문제를 해결하였다. using System; using System.Text.RegularExpressions; using System.Linq; class ProjectEuler { st..
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라는 변수는 이후로도..
1. 개요 이것저것을 하다보니 통계적 공정 관리(Statistical Process Control; SPC)를 접할 일이 있었다. SPC란 통계적인 방법론을 사용하여 품질을 관리하는 시스템이다. 1920년대 초반에 아이디어가 나왔고 지금까지 많은 공장에서 사용되고 있다. SPC의 구체적인 내용은 이번 포스팅의 주제가 아니므로 다루지 않고 링크로 대체한다. SPC에서 나의 관심을 끈 것은 아래와 같은 그림이었다. Sample size(\(n\))가 2 이상, 10 미만인 경우 Xbar-R chart를, 10 이상일 때에는 Xbar-S chart를 사용하라고 한다. 즉, \(n\)이 작을 때에는 표본의 범위(\(r\))로 모표준편차(\(\sigma\))를 추정하고 \(n\)이 클 때에는 표본의 표준편차(\(..
1. 개요이것 저것을 하다보니 C#과 R을 연동할 일이 생겼다. 학습을 목적으로 Visual Studio없이 진행한다. 2. 준비(1) .Net Framework를 설치한 후 C# complier(csc.exe)가 존재하는지 확인한다. (2) R을 설치한다. (3) C#과 R을 연동시킬 수 있도록 도와주는 라이브러리, RDotNet을 설치한다. 공식 사이트에서는 nuget을 통하여 받도록 권장하고 있다. 여기에서 nuget의 window command line 최신 버전을 받자. 그리고 cmd를 켜고 nuget이 있는 폴더에서 nuget install R.NET.Community를 실행하자. DynamicInterop, R.NET.Community 폴더가 생성되면 잘 받은 것이다. 해당 폴더 안의 dll..
1. 개요 문제는 이곳에서 확인할 수 있다. 10,001번째 소수를 구하는 것이 문제의 목적이다. 2. Ver 1.0 어떤 수가 소수인지 판별하는 문제에 대해서는 예전에도 포스트한 적이 있다. 본 문제를 해결하는데에도 유사한 방법을 사용할 것이다. // javascript var prime = [2,3]; var prime_candidate = prime[prime.length-1]; while( prime.length < 10001 ){ prime_candidate += 2; var is_prime = ( function(){ var lim = Math.sqrt( prime_candidate ); for( p in prime ){ if( lim < p ) break; if( prime_candidate..
1. 문제 오라클 DB를 사용하던 중 다음과 같은 상황이 발생했다. 데이터를 화면으로 내보낼 때 유효숫자에 반올림이 있어야 한다. 예를 들면, 0.000001247을 유효숫자 3자리에서 반올림하면 0.00000125가 된다. 2. 해결 방법 먼저 0.000001247에 적절한 수를 곱하여 0.1247을 만든다. 그리고 ROUND 함수를 사용하여 0.125를 만든 뒤 다시 그 수로 나누어 0.00000125를 구하면 된다. 이때, 0.000001247은 1.247E-6으로 표현할 수 있다. 그러므로 1E-5이 "적절한 수"이다. 단, 절대값이 1보다 큰 숫자는 위와 같은 변환을 거칠 필요가 없이 바로 ROUND 함수로 처리할 수 있다. 아래는 오라클에서의 query이다. SELECT T.N AS N , R..
1. 개요 문제는 이곳에서 확인할 수 있다. 1부터 100까지 합의 제곱과 1부터 100까지 제곱의 합과의 차를 구하는 문제이다. 2. Ver 1.0 1부터 \(k\)까지 자연수의 합의 제곱과 제곱의 합의 차이는 다음과 같은 간단한 공식으로 구할 수 있다. $$ \left(\sum_{i=1}^{k}i\right)^2 - \sum_{i=1}^{k}i^2 = \left\{\frac{k(k+1)}{2}\right\}^2 - \frac{k(k+1)(2k+1)}{6}$$ // 자바스크립트로 구현한다. var pow = Math.pow; var k = 100; var front_part = pow( k, 2 ) * pow( k+1, 2 )/4 var rear_part = k * ( k+1 ) *(2*k+1)/6 a..
1. 개요 문제는 이곳에서 확인할 수 있다. 1부터 20까지의 최소공배수(Least Common Multiple, LCM)를 구하는 것이 목적이다. 2. Ver 1.0 먼저 1과 2의 LCM을 구한다. 그 LCM과 3과의 LCM을 구한다. 이를 20까지 반복한다. 두 수의 LCM을 구하기 위해서는 먼저 두 수를 소인수분해 해야 한다. 그리고 공통인수는 거듭제곱이 더 큰 것을 곱하고, 공통인수가 아닌 것은 모두 곱하면 된다. 예를 들어, \(20=2^2 5^1, 24=2^3 3^1\)이므로 20과 24의 최소공배수는 \( 2^3 3^1 5^1 = 120\)이다. # -*- coding: utf-8 -*- # ver 1.0 import numpy as np import utils as u import fun..
문제는 이곳에서 확인할 수 있다. 어떤 세자리수를 곱하여 만들 수 있는 가장 큰 palindromic number를 찾자. 이때 palindrome은 앞으로 읽으나 뒤로 읽으나 같은 문자열을 가르킨다. # -*- coding: utf-8 -*- # ver 1.0 palindrome = [ x*y for x in range( 999, 99, -1 ) for y in range( x, 99, -1 ) if str(x*y) == str(x*y)[::-1] ] print max( palindrome ) 사람들의 코드를 보니 더 나은 아이디어가 있어 이를 소개한다. 6자리의 palindrome \( n\)은 아래와 같이 표현된다. \(n = 100000x + 10000y + 1000z + 100z + 10y + ..
문제는 이곳에서 확인할 수 있다. 600851475143의 가장 큰 소인수를 찾는 문제인데, 이를 해결하기 위해서는 어떤 수가 소수인지 먼저 파악해야 한다. 이를 위하여 소수 판별에 관한 내용을 따로 포스트하였다. 600851475143를 소수로 계속 나누되 1을 만드는 소수를 찾으면 된다. # -*- coding: utf-8 -*- import numpy as np import utils as u # class Prime p = u.Prime() n = 600851475143 # n is not divisible by 2 prime_candidate = 3 find_prime = True while True: while not p.is_prime( prime_candidate ): prime_candi..