[자료구조] Queue의 En,Dequeue를 이용해서 출력을 반전시켜보자
이러한 출력구조를 가진게 Queue이다. 1, 2, 3, 4, 5를 Enqueue 하면 1, 2, 3, 4, 5가 그대로 Dequeue 된다. 구현에는 Stack과 마찬가지로 5개 함수로 이루어져 있다. init(), isEmpty(), isFull(), enQueue(), deQueue() Stack과 거의 유사하지만, 몇가지가 다르다. 코드를 보며 생각해보자. Stack은 hyun222.tistory.com/114 여길 참고하면 된다. 함수부분 코드 void init(void) { rear = 0; front = 0; } int isEmpty(void) { return (rear == front); } int isFull(void) { return ((front + 1) % MAX == rear); ..
2021. 4. 3.
[알고리즘] 최대 Subarray 찾기
아래와 같은 배열(집합)이 있다. 1 -3 2 4 -1 5 -3 이 배열의 부분집합중에, 합이 가장 큰 것은 무엇인가? 답은 2, 4, -1, 5 를 더한 10이다. 이것을 어떻게 빨리 구할 수 있을까? --------- 내가 생각한 방법은 이렇다. - 양수로 시작, 양수로 끝. 목록을 만들어보자면 이와 같다. 1, -3, 2, 4 2, 4, -1, 5 4, -1, 5 5 하지만 모두가 음수이거나, 양수이면? 음수일 때 : 최솟값 1개가 정답. 양수일 때 : 모든값을 더한것이 정답. 알고리즘 시간복잡도는 O(N^2)일 것이다. --------- 제시하는 알고리즘은 다음과 같다. Count 변수가 있다. Count 변수는 배열을 더해간다. 만약 Count 변수가 음수가 된다면, 0으로 초기화 한다. 이렇게..
2021. 3. 26.