[링크 제목](다른 마크다운 파일 경로.md#헤드라인)
http://gamedevforever.com/7
A* 알고리즘은 특정상태에 이웃한 녀석들을 탐색하면서 시작 상태에서부터 목표 상태에 이르는 가장 싼 비용의 경로를 찾는 알고리즘이다. 공간을 어떻게 분할해서 하냐에 따라서 같은 A*이지만 다양한 방식으로 나올 수 있는데, 제일 간닪나 형태인 정사각형 격자 형태에서 보자면. 정사각형 격자에서는 이웃한 노드들을 탐색하기 아주 좋다. A*는 열린 목록과 닫힌 목록 2가지의 상태 목록을 관리한다. 열린 목록엔 처음 시작점만을 가지고 시작을 하고 처음 시작점에서 이웃한 노드들을 탐색하고 가장 비용이 싼 노드로 이동한다. 그리고 열린 목록에서는 그 노드를 지우고 닫힌 목록에다가 넣는다. 그런식으로 가장 비용이 싼 노드들을 찾으면서 길을 찾게 된다. 물론 이미 열린 목록이나 닫힌 목록에 있는 노드는 또 추가하거나 하..
빌드 후 이벤트로 특정 파일을 복사해서 가져와 쓰려고 하는데 어쩌다 저런 에러가 나는 경우가 있는데... copy $(TargetPath) $(TargetDir)..\Tool\bin\Debug\ 이리저리 찾아보니 경로에 공백이 있거나 경로가 잘못됬거나 인데.. 경로가 잘못되지 않았다면 경로에 공백이 있어서 라고 합니다. 그래서 보통 명령어를 copy "$(TargetPath)" "$(TargetDir)..\Tool\bin\Debug\" 이런식으로 사용하면 문제가 없어집니다.
1295 : 이진탐색제한시간: 1Sec 메모리제한: 32mb 해결횟수: 882회 시도횟수: 1923회 오름차순의 순서대로 정렬되어 있는 N개의 데이터에서 특정한 숫자가 몇 번째 위치에 있는지를 알아내는 프로그램을 작성하시오. 첫 줄에 N이 주어진다. N은 정렬되어 주어지는 데이터의 수이다.(1≤N≤50,000) 둘째 줄에는 N개의 서로 다른 수가 정렬되어 주어진다. 각 수는 공백 하나로 분리되어 주어진다. 셋째 줄에는 데이터에서 찾아야할 특정한 수의 개수 T가 주어진다. 즉, T가 3이면 3개의 수를 정렬된 데이터에서 찾아야 한다.(1≤T≤10,000) 넷째 줄에는 T개의 수가 공백 하나로 분리되어 주어진다. 찾아야할 수가 정렬되어 주어진 데이터의 수중에서 앞에서부터 몇 번째에 있는지 그 위치를 출력한다..
유클리드 호제법
아래의 그림은 삽입정렬을 보여주는 그림입니다. 삽입정렬은 맨 첫번째 원소를 기준으로 해서 왼쪽부터 하나씩 알맞는 위치에 삽입하는 정렬입니다. 맨 첫 번째 원소부터 하나씩 증가하며 왼쪽에 정렬을 합니다. 그리고 정렬되지 않은 그림상에서의 하얀 부분의 원소들을 정렬이 된 검은 부분에 자신의 위치에 맞는 곳에 삽입합니다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 void InsertionSort( int array[], int num ) { for( int i=1; i=0; j--,n-- ) { if( array[j] > array[n] ) swap( array[j], array[n] ); } } } Colored by Color Scripter cs
아래는 버블 정렬을 보여주는 그림입니다. 버블 정렬은 그림과 같이 맨 처음 원소부터 인접한 원소를 비교하여 맨 끝 원소까지 비교를 하며 정렬을 하는 방법입니다. 그리고 그 모양이 물 속에서 물방울이 올라오는 모양같다고 하여 버블 정렬이라고 부릅니다. 아래와 같이 인접한 원소끼리 비교하여 큰 원소이면 바꾸는 식으로 뒤로 뒤로 보내게 되는 데요. 그런식으로 하다본면 맨 마지막 원소엔 가장 큰 원소가 자리잡게 됩니다. 그런식으로 다시 첫 원소부터 다시 비교를 하여 정렬을 하게 됩니다. 가장 큰 것을 마지막에 넣는 식이다 보니, 이미 정렬이 된 원소들은 제외를 하면서 정렬을 합니다. 1 2 3 4 5 6 7 8 9 10 11 void BubbleSort( int *array, int num ) { for( in..
아래의 이미지는 7개의 정수를 선택 정렬을 이용하여 정렬을 하고 있는 모습니다. 가장 첫 번째자리 8이 있는 자리에 7개의 배열을 검사하여 제일 작은 녀석을 8과 바꿉니다. 그렇게 되면 우선 1번쨰 자리에는 가장 작은 녀석이니 배제하고 2번째에 들어올 녀석을 다시 6개의 배열을 검사하여 제일 작은 녀석과 2번째 자리에 있는 4와 바꾸는 식으로 정렬을 하게 됩니다. 시간 복잡도는 O(n²) 입니다. 1 2 3 4 5 6 7 8 9 10 11 12 13 void SelectionSort( int *array, int num ) { int idx = 0; for( int i=0; i