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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
void DownHeap(int* arr, int CurrentIndex,int size) {
    if (CurrentIndex >= size - 1return;
 
    int leftIndex = CurrentIndex * 2 + 1;
 
    int rightIndex = CurrentIndex * 2 + 2;
 
    int largeValueIndex = CurrentIndex;
 
    if (leftIndex <= size - 1 && rightIndex <= size - 1) {
 
        largeValueIndex = arr[leftIndex] < arr[rightIndex] ? rightIndex : leftIndex;
 
    }
    else if (leftIndex <= size - 1 && rightIndex > size - 1) {
 
        largeValueIndex = leftIndex;
 
    }
 
    if (arr[largeValueIndex] > arr[CurrentIndex]) {
        swap(&arr[largeValueIndex], &arr[CurrentIndex]);
        return DownHeap(arr, largeValueIndex, size);
    }
 
}
 
void BuildHeap(int* arr, int size) {
 
    for (int i = size / 2 - 1; i >= 0; i--)
        DownHeap(arr, i, size);
 
}
 
 
void HeapSort(int* arr, int size) {
    
    BuildHeap(arr, size);
 
 
    for(int i = 0 ; i < size ; i++) {
        swap(&arr[0], &arr[size - 1 - i]);
        DownHeap(arr, 0 ,size - i - 1); // 바뀌기 전에 마지막인덱스 값을 특정 짓는 것 이기 때문에 
        // 해주지 않으면 원래의 제일 작은 값과 큰 값이 바뀌는 경우가 생겨버린다.
    }
 
}
cs


'알고리즘' 카테고리의 다른 글

Dynamic Coin Change  (0) 2018.05.29
Astar  (0) 2018.05.26
행렬곱셈  (0) 2018.05.26
Sequencial Search  (0) 2018.05.26
BinarySearch  (0) 2018.05.26

그리디 알고리즘 이 아닌 동적계획프로그래밍 동전알고리즘

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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
#include <iostream>
using namespace std;
 
const int Change = 40;
 
int CoinSizeArray[] = { 1510 ,16 };
 
int CoinSize = 4;
// Always Sorted Array 
 
void InitializeArray(int* arr, int Change);
 
void DPCoinChange(int Change, int* CoinSizeArray) {
 
    int* CountCoinArray = new int[Change + 1];
    
    InitializeArray(CountCoinArray, Change);
    
    for (int i = 1; i < Change + 1; i++) {
 
        for (int j = CoinSize - 1; j >= 0; j--) {
 
            if (CoinSizeArray[j] <= i && CountCoinArray[i - CoinSizeArray[j]] + 1 < CountCoinArray[i]) {
                CountCoinArray[i] = CountCoinArray[i - CoinSizeArray[j]] + 1;
            }
 
        }
 
    }
 
    cout << CountCoinArray[Change] << endl;
 
}
 
void InitializeArray(int* arr, int Change) {
 
    for (int i = 0; i < Change + 1; i++) {
        arr[i] = Change + 1;
    }
    arr[0= 0;
    
}
 
 
int main() {
 
 
    DPCoinChange(Change, CoinSizeArray);
 
 
 
    return 0;
}
cs


'알고리즘' 카테고리의 다른 글

다시 작성했는데 똑같은 곳에서 또 실수한 흑우의 HeapSort  (0) 2018.05.30
Astar  (0) 2018.05.26
행렬곱셈  (0) 2018.05.26
Sequencial Search  (0) 2018.05.26
BinarySearch  (0) 2018.05.26

구현했었던 애니팡 류의 팀작업물 결과에 대해 너무 정적이다. 라는 피드백을 받았다.

 

현재 구성된 우리 팀원들이 유니티에 대해 능숙하지 않기 때문에 일단 그래픽리소스를 붙혀서 최대한

 

기획서에 가깝게 만드는 것을 목표로 잡았었다.  뭔가를 구현하기 있어서 각종 실험을 거쳐 붙이고 있는 과정이기 때문에

 

간단하지만 하나하나 구현하는 것 또한 오래 걸렸다. 그래서 기획서에 기재된 내용너머로 무언가를 더 생각해보지 않은 것 같다.

 

씬 하나하나에 살짝살짝 움직이는 애니메이션을 넣어줄 계획이다.

'유니티' 카테고리의 다른 글

유니티에서 채팅기능 구현 및 문자열 송수신 문제점  (0) 2019.05.02
게임 내 출석부 구현  (0) 2018.05.27
UI OnOff Sprite Change  (0) 2018.05.27
UI : Canvas VS CameraScreen  (0) 2018.05.27

+ Recent posts