일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- neural network
- 비샤몬당
- 딥러닝
- c#
- 오일러 프로젝트
- 합성곱 신경망
- bayesian
- SQL
- CNN
- 소수
- Python
- Autoencoder
- 전처리
- 소인수분해
- Gram matrix
- deep learning
- 역전파법
- A Neural Algorithm of Artistic Style
- backpropagation
- 자전거 여행
- 수달
- 히토요시
- project euler
- Convolutional Neural Network
- 신경망
- 베이지안
- 냥코 센세
- mnist
- 역전파
- 오토인코더
- Today
- Total
목록c# (8)
통계, IT, AI
1. 들어가며 C#에서 UI를 개발하면서 이벤트가 무엇인지 고민하게 되었다. 즉, Visual Studio에서 이벤트 처리를 잘 지원하는 덕분에 아무 생각없이 해왔는데 좀 더 복잡한 것을 하려고 하니 이벤트를 잘 모른다는 것을 알게 된 것이다. 이번을 기회로 이벤트가 무엇인지 간단하게 정리하려고 한다. 2. 이벤트의 개념 아래는 MSDN에 나오는 간단한 UI이다. 노란 패널에 무엇인가를 쓸 수 있고 Clear 버튼을 누르면 노란색 부분에 써져 있는 것이 지워진다. 이를 구현하기 위해서는 Clear 버튼이 눌리는 사건이 발생하면 그 정보를 패널에 전달해 주는 것이 필요한데, 그것이 이벤트이다. 즉, 이벤트는 한 클래스에서 어떤 사건이 발생하면 그 정보를 다른 클래스로 넘기는 방법이다. UI를 구성할 때 자..
1. 개요 문제는 이곳에서 확인할 수 있다. 먼저 \(n\)번째 triangular number는 1부터 정수 \(n\)까지의 합으로 정의된다. 예를 들어 3번째 triangular number는 \(1+2+3=6\)이다. 문제의 목표는, 처음으로 500개가 넘는 제수(divisor)를 가지는 triangular number를 찾는 것이다. 문제를 풀고나니 더 좋은 방법이 있었기 때문에 이를 비교하기 위하여 각 풀이마다 시간을 잰다. 2. Ver 1.0 가장 간단한 방법은 어떤 triangular number를 그 숫자의 제곱근보다 작거나 같은 자연수로 나누어 가면서 제수의 수를 세는 것이다. using System; using System.Diagnostics; class ProjectEuler { s..
1. 개요 문제는 이곳에서 확인할 수 있다. 어떤 숫자더미에서 상하좌우 및 대각선 방향으로 숫자 4개를 곱하여 가장 큰 값을 구하는 것이 목표이다. 2. Ver 1.0 인덱스를 맞추는 것은 귀찮은 일이므로 상하좌우 및 대각선 방향으로 4개의 숫자를 찾되 IndexOutOfRangeException이 발생하면 바로 다음의 경우를 찾는 식으로 구현한다. using System; using System.Collections.Generic; using System.Linq; class ProjectEuler { static void Main(string[] args) { string str_data = @"08 02 22 97 38 15 00 40 00 75 04 05 07 78 52 12 50 77 91 08..
1. 개요 문제는 이곳에서 확인할 수 있다. 200만보다 작은 소수의 합을 구하는 것이 목표이다. 소수를 찾는 데에는 에라토스테네스의 체를 이용한다. 예를 들어 2 이상 120 이하의 소수를 찾는다고 하자. 먼저 2를 남기고 2의 배수를 모두 지운다. 이후 3을 남기고 3의 배수를 모두 지운다. 다음 수인 4는 이미 지워졌으므로 5를 남기고 5의 배수를 모두 지운다. 이것을 120의 양의 제곱근보다 작은 정수 중 가장 큰 정수까지 반복하면 된다. 아래 그림은 이 방법에 대한 일러스트레이션이다. 2. Ver 1.0 using System; using System.Collections.Generic; using System.Linq; class ProjectEuler { static void Main(str..
1. 개요 문제는 이곳에서 확인할 수 있다. 합이 1000인 서로 다른 3개의 자연수 가운데, 가장 큰 수의 제곱이 나머지 두 수의 제곱의 합과 같은 자연수를 찾고 그것의 곱을 구하는 것이 목표이다. 2. Ver 1.0 가장 작은 자연수를 \(a\)라고 하자. \(a\)는 1이상, 332이하이다. 332보다 크다면 문제의 조건을 충족시킬 수 없기 때문이다. 같은 이유에서 두번째로 큰 자연수 \(b\)는 \(a+1\)이상, \((1000-a)/2-1\)이하이다. 이 조건을 이용하여 코딩한다. using System; class ProjectEuler { static void Main(string[] args) { for(int a=1; a
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. 개요이것 저것을 하다보니 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..