일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- c#
- 버스 API
- MDB Select
- delegate
- WPF
- C# 파일 암/복호화
- sqlite3
- 객체지향
- C# MDB Handle
- Excel Cell Format
- MVC
- C# MDB
- 공공 데이터 포털
- MDB Connect
- DrawEllipse
- 경기도 버스정보시스템
- eventargs
- eventhandler
- GDI+
- 시
- solid
- Cell Border Style
- 경기도 버스
- Winform
- TDD
- 디자인 패턴
- DrawRectangle
- Json.NET
- JSON
- NUnit
- Today
- Total
White Whale Studio
[알고리즘] 최소값 구하기 / C# 풀이 본문
[코딩 도장 문제입니다.] 난이도 평균 2
1차원의 점들이 주어졌을 때, 그 중 가장 거리가 짧은 것의 쌍을 출력하는 함수를 작성하시오. (단 점들의 배열은 모두 정렬되어있다고 가정한다.)
예를들어 S={1, 3, 4, 8, 13, 17, 20} 이 주어졌다면, 결과값은 (3, 4)가 될 것이다.
최소값 구하기 문제입니다.
어떻게하면 더 줄일수있을것 같으면서도.. 심플한게 베스트 아닌가하는 억지를 부려가며
짜보았습니다.
Abs 함수는 절대값을 반환하는 함수로 Math.Abs() 라는 함수가 자체적으로 있기는 합니다만..
어디선가 기본 제공함수보다 직접짜면 성능면에서 더 빠르다는 이야기를 들어 코드에 포함했습니다.
(그래봤자 연습문제 풀이지만;;;)
방법은 간단합니다. 반복문을 돌면서 각 수별로 차이값을 계산하고 가장 최소값과 최소값을 만드는 숫자쌍을 저장하여 마지막에 남은 애들이 최소값이 되는 방식입니다. 끝~
--------------------
public static class SearchMinDistance
{
static int[] arr = new int[7] {1, 3, 4, 8, 13, 17, 20 }; // 기본 데이터
static int[] minItem = new int[2] { -1, -1 }; // 결과값 저장 배열
static int tempMin = 9999; // 거리차 저장 변수
public static void SearchMinDis()
{
for (int i = 0; i < arr.Length; i++)
{
for (int j = 0; j < arr.Length; j++)
{
if (i != j)
{
if (tempMin > Abs(arr[i], arr[j])) // 두 수의 차가 기존의 최소값보다 작으면 저장
{
tempMin = Abs(arr[i], arr[j]);
minItem[0] = arr[i];
minItem[1] = arr[j];
Console.WriteLine("{0}, {1} : R = {2}", minItem[0], minItem[1], Abs(minItem[0], minItem[1]));
}
}
}
}
Console.WriteLine("{0}, {1} : R = {2}", minItem[0], minItem[1], Abs(minItem[0], minItem[1]));
}
public static int Abs(int i, int j) // 절대값 반환 함수입니다.
{
int results = i - j;
return results > 0 ? results : results * -1;
}
}
'IT Engineering > 코딩놀이' 카테고리의 다른 글
[알고리즘] 피보나치 수열 구하기 / C# 풀이 (0) | 2015.04.24 |
---|---|
[알고리즘] Insertion Sort(삽입 정렬) / C# 풀이 (0) | 2015.04.22 |
[알고리즘] 게시판 페이징 / C# 풀이 (0) | 2015.04.21 |
[알고리즘] 모스부호 해독 / C# 풀이 (0) | 2015.04.21 |