소프트웨어 개발 165

Microsoft Face API 주요부분

중요한 부분은 다음과 같다. 서버와 연결하는 부분 var faceServiceClient = new FaceServiceClient(subscriptionKey); face를 추출하는 부분 Contract.Face[] faces = await faceServiceClient.DetectAsync(fileStream, false, true, new FaceAttributeType[] { FaceAttributeType.Gender, FaceAttributeType.Age, FaceAttributeType.Smile, FaceAttributeType.Glasses }); 돌아가면서 객체 collection에 넣는 모습 foreach (var face in faces) { DetectedFaces.Add(ne..

이진탐색 구현 (Binary Search)

다음의 배열이 있다고 치자. int[] array = {1,4,2,5,6,9,141,552}; 그리고 141이라는 숫자를 빠르게 이진탐색으로 찾아가야 한다. 시그니처는 다음과 같이 잡자 public static int binarySearch (int[] array, int key) 다만 이 메서드에 마구 array를 집어넣으면 안되고, 이진탐색의 경우 필수적인 조건이 sort를 해주어야 한다. array는 다음과 같이 간단하게 sort가 가능하다. Arrays.sort(array); 이제 구현을 해보자 public static int binarySearch (int[] array, int key) { int upper = array.length - 1; int lower = 0; while(upper >..

판매원 알고리즘 Travelling Salesman Problem (TSP)

판매원 알고리즘은 시간이 팩토리얼로 걸리기 때문에 들러야 할 도시가 8번이 넘어간다면 굉장히 오래걸리기 때문에, 완전탐색을 해야 하되 8번 이상은 별 다른 기법을 도입해야한다.제일 적은 거리를 이동해 모든 도시를 도는 방법은 어떻게 되는가? 보통은 다시 되돌아오는 경우를 생각하지만 여기서는 출발지와 도착지를 모두 고려한다. 먼저, 다음과 같이 값들이 있다고 친다. final static int x[] = { 0, 14, 25, 50, 20, 2, 100 }; final static int y[] = {1,1,10,70,40,99,100}; x[0], y[0] 은 시작지점이며x[6], y[6] 은 끝지점이다.시작지점과 끝지점이 결정되었다고 했을때, 중간에 어떤 루트를 타야할지 계산해야한다.일단, dista..

배열및 다차원배열 출력방법

파이썬등에서 배열 출력하는건 사실 일도아니다. 다만, 자바는 static method를 통해서 출력하거나 직접 출력함수를 작성해야 한다. 예를들어, 아래와 같이 출력함수를 간단하게 만들어볼수있다. public static void printArray(int[][] array) { for (int i = 0; i < array.length; i++) { for (int j = 0; j < array[i].length; j++) { System.out.print(" " + array[i][j]); } System.out.println(); } } 결과 14 14 14 14 14 14 0 20 20 20 20 20 20 0 85 85 85 85 85 85 0 60 60 60 60 60 60 0 77 77 77..

복잡도에 따른 속도 순위

O(1) : 입력 자료의 수에 관계없이 일정한 실행 시간을 갖는 알고리즘O(log N) : 입력 자료의 크기가 N일경우 log2N 번만큼의 수행시간을 가진다.O(N) : 입력 자료의 크기가 N일경우 N 번만큼의 수행시간을 가진다.O(N log N) : 입력 자료의 크기가 N일경우 N*(log2N) 번만큼의 수행시간을 가진다.O(N2) : 입력 자료의 크기가 N일경우 N2 번만큼의 수행시간을 가진다.O(N3) : 입력 자료의 크기가 N일경우 N3 번만큼의 수행시간을 가진다.O(2n) : 입력 자료의 크기가 N일경우 2N 번만큼의 수행시간을 가진다.O(n!) : 입력 자료의 크기가 N일경우 n*(n-1)*(n-2)... * 1(n!) 번만큼의 수행시간을 가진다. ex)외판원 문제(TSP)의 기본적인 해법 일..