정보관리기술사&컴퓨터시스템응용기술사 6: 알고리즘 (정보관리기술사와 컴퓨터시스템응용기술사를 한번에 끝낼 수 있는 길라잡이 | 개정증보판)

정보관리기술사&컴퓨터시스템응용기술사 6: 알고리즘 (정보관리기술사와 컴퓨터시스템응용기술사를 한번에 끝낼 수 있는 길라잡이 | 개정증보판)

$30.75
Description
1. 이 책은 학원 수강을 통해 습득한 내용과 멘토링을 진행하면서 스스로 학습한 내용을 바탕으로 답안 형태로 작성하였고, IT분야 기술사인 정보관리기술사와 컴퓨터시스템응용기술사 자격을 취득하기 위해 학습하고 있거나 학습하고자 하는 분들을 위해 만들었습니다.

2. 본 교재는 발전 동향, 배경 그리고 유사 기술과의 비교, 다양한 도식화 등 25년간의 실무 개발자 경험을 토대로 작성한 내용으로 풍부한 경험적인 요소가 내재되어 있는 장점이 있습니다.
저자

권영식

- 성균관대학교 정보통신대학원 정보보호과 졸업(공학석사)
- 삼성전자 선임/책임 연구원
- 도시바 삼성 스토리지 테크놀러지 - 코리아(주) 수석연구원
- 컴퓨터시스템응용 기술사, 정보시스템 수석감리원, 정보통신 특급기술자
- 과학기술정보통신부 IT 멘토
- 데이터관리인증심사원(DQC-M)
- 韓(한)·日(일)기술사 교류회 위원

목차

PART 1. 자료구조(Data Structure)와 알고리즘(Algorithm)
1. 자료구조(Data Structure)
2. 자료구조(Data Structure)의 형태, 구성, 단위
3. 알고리즘(Algorithm)의 정의, 조건, 접근 방법, 분석 방법
4. 알고리즘 실행시간을 추정하는데 사용되는 Big-Oh(O) 표기법
5. 알고리즘의 평가방법인 Time Complexity(시간 복잡도)와 Space Complexity(공간 복잡도)
6. 10진수 53를 2진수로 변환하고 2진수 110101을 10진수로 변환
7. 10진수 0.6875를 2진수로 변환하고 그 결과를 다시 10진수로 표현
8. 2진수를 음수로 표현하는 방법 3가지 이상 나열
9. 알고리즘 표현 방법과 반복문인 for, while, do~while문을 사용하여 1에서 100까지 덧셈하는 code 예제와 순서도
10. 아래 3개 A,B,C 알고리즘 사용시 n에 대한 전체 연산수를 구하시오
11. 프로그램 언어에서 함수간 매개변수 전달기법인 Call-by-value, Call-by-reference, Call-by-name에 대해 실제 Code 예제를 보이시오.
12. C언어를 사용하여 정수를 이진수로 변환하는 프로그램을 작성하시오.
가정: C언어에서 이진수의 출력은 문자열, 이진수는 32bit를 초과하지 않음
13. 자료 구조에서 아래 Pointer 자료의 Memory Allocation (할당)를 표현하고 설명하시오.

PART 2. 재귀함수(Recursion Function)
14. “Factorial n”을 구하는 재귀호출 알고리즘
15. 다음 재귀호출(Recursive Call) Code에 수행 동작을 설명하시오.
16. 피보나치 수열(Fibonacci Sequence)에 대해 설명하고 아래 Code에 대한 실행 결과를 기술하시오.
17. 아래 피보나치(Fibonacci) 함수 Code에 대해 실행 과정을 설명하고 실행 결과를 기술하시오.
18. 아래 하노이 타워(The Tower of Hanoi) 문제를 아래 조건에 적절하게 기술하시오.
조건 1) 하나의 막대에 쌓여 있는 원반을 다른 하나의 원반에 그대로 옮기시오.
이때 한 번에 하나씩만 옮길 수 있고 옮기는 과정에서 작은 원반의 위에
큰 원반이 올려져서는 안됨.
조건 2) 실행 과정을 설명하고 Coding 하시오.

PART 3. 배열(Array)과 연결 리스트(Linked List)
19. Array(배열)에 대해 설명하고 장단점
20. 다음 3차원 배열 값에 대한 배열의 각각의 요소 값과 Memory에 할당되는 방법에 대해 기술하시오(행(Column)우선의 경우를 고려하여 작성하시오).
21. 배열(Array) List와 연결 List의 차이점
22. 선형 List(Linear List)에서 처리할 수 있는 연산에 대해 7가지 이상 나열
23. Linked List의 구성과 비순차적인 메모리 구성에 따른 삽입과 삭제
24. 다음과 같이 구조체 자료형 인 _node를 선언하고 이를 이용하여 연결리스트(Linked List)를 만들었다. 다음 소스를 보고 물음에 답하시오(단, 시작함수는 _tmain()).
25. 이중(Double) 연결 리스트(Linked List)에서 삽입과 삭제
26. 인접 다중 리스트(Adjacency Multi List)에 대해 설명하고 아래 Graph 에 대해 인접 리스트로 표현하시오.

PART 4. 스택(Stack)과 큐(Queue)
27. 스택(Stack)에서 사용되는 용어와 연산
28. 아래 Stack 구조를 Linked List(연결리스트)형태로 표현하고 D값을 삭제한 연결리스트와 E값을 삽입한 연결리스트를 도식화 하시오(Stack크기는 5로 가정한다).
29. Stack의 크기 n=5인 스택에서 노드 A,B,C,D를 Push하고 D,C,B를 POP한 후 다시 노드 E,F를 Push 하는 과정(TOP는 Stack Pointer임)
30. Stack의 활용예 5가지 이상과 2개의 상세예제 그리고 stack overflow 발생방지방법 2가지
31. Queue에 대해 설명하고 Queue를 표현하기 위한 조건과 큐의 삽입과 삭제에 대해 Coding하여 설명하시오.
32. 원형 큐(Circular Queue)에서 Enqueue와 Dequeue, Empty와 Full 상태
33. 우선순위 큐(Priority Queue)를 구현하는 방법으로 배열, 연결 List, 힙(Heap)을 이용하는 방법이 있다. 각각 설명하시오.
34. 데크(Deque : Double Ended Queue)의 삽입과 삭제 과정

PART 5. 정렬(Sorting)
35. 다음은 C언어로 작성된 버블 정렬(Bubble Sort) 알고리즘 프로그램 일부이다. 프로그램을 완성하시오.
36. 아래 Code는 Bubble Sort에서 Flag를 사용하는 경우와 사용하지 않는 경우를 각각 Coding 하고자 한다. 가.항목과 나.항목의 Code를 완성하고 차이점을 기술하시오.
37. Bubble Sort에서 이미 정렬된 값은 더 이상 비교할 필요가 없다. 이 점을 고려하여 Bubble Sort의 예제를 들어 Coding 하시오(설명도 추가하시오).
38. 다음 Key값에 대한 Bubble Sort 과정을 설명하고 버블 정렬 성능 평가를 Big-oh(O)로 표기하시오.
39. 아래 Key값에 대해 선택 정렬 (Selection Sort) 과정을 설명하고 Coding 예제를 기술하시오.
40. 아래 Key값에 대해 삽입 정렬 (Insertion Sort) 과정을 설명하고 Code 예제를 기술하시오.
41. Insertion Sort (삽입 정렬)에 대해 실행 효율적인 측면을 설명하고 초기 자료 : 2, 4, 3, 5, 1 값에 실행 과정을 기술하시오.
42. 다음 값을 삽입 정렬 (Insert Sorting) 과정을 설명하시오.
43. 다음 각각의 Data를 선택 정렬과 머지 정렬(Merge)의 과정을 설명하시오.
44. 아래 Record 값을 버킷(Bucket)을 사용하여 기수정렬(Radix Sort)을 수행하는 과정을 기술하시오(n=15).
45. 아래 Record 값을 Queue를 사용하여 기수정렬(Radix Sort)을 수행하는 과정을 기술하시오.(n=15)
46. 12개의 Record Key 값= (121, 212, 004, 120, 215, 309, 518, 202, 415, 345, 107, 333)로 구성된 파일을 기수정렬(Radix) (LSD 우선방식적용)로 정렬하는 과정을 보이시오.
47. 아래 2개의 배열 값에서 2-원 합병 정렬 (2-Way Merge Sort)으로 정렬하는 과정을 설명하시오.
48. 아래 Key 값을 이용하여 Shell Sort 과정을 설명하시오(이때 매개변수는 6,4,3,2,1을 적용하시오).
49. 병합 정렬 (Merge Sort)의 방법에 대해 추상화하여 설명하시오. Key값은 다음과 같다. Key=(8, 2, 3, 7, 1, 5, 4, 6)
50. 다음 16개의 정렬되지 않는 초기 자료가 배열 a 에 입력되어 있을 때 단계별로 오름차순으로 정렬되는 과정을 (기수정렬-Radix Sort)방법 사용) 기술하시오.
51. Quick Sorting 알고리즘을 설명하고, 다음 Data를 Quick Sorting 알고리즘을 정렬하는 과정을 설명하시오. Data는 15, 22, 13, 27, 12, 10, 20, 25.
52. 아래 정렬되지 않은 데이터가 9개 있을 때 외부정렬(External Sort) 방식인 다단계 병합방식으로 정렬되는 과정을 기술하시오.
53. 아래 정렬되지 않은 데이터 8개에 대해 균형병합정렬(Balanced Merge Sort)과정을 기술하시오.
54. 아래 이진트리를 힙(Heap)구조로 변형하시오.
55. 아래 이진트리는 이미 Heap 구조로 변형된 상태(초기상태)이다. Heap sort의 과정을 상세히 설명하시오.
56. 다음 Heap 구조에서 3를 추가하여 Heap 구조를 재정렬하고 Root Node 제거시의 과정을 기술하시오(최소 힙 - Minimum Heap을 사용하시오).
57 내부 정렬(Sort)알고리즘의 종류를 나열하고 비교횟수와 소요공간(기억공간), 특징을 나열하시오.

PART 6. 탐색(Search)
58. 검색(Search)의 정의와 용어, 그리고 검색 방법을 분류
59. 순차 검색(Sequential Search)의 정의와 알고리즘 표현 그리고 Average Search Length(평균검색 길이)를 설명하시오.
60. 이진 검색(Binary Search)과정을 Flow Chart로 표현하시오.
61. Binary Search(이진검색)에 대해 설명하고 아래 Record에서 ‘25’ Key 값을 검색하는 과정을 설명하시오.
62. 다음은 17개의 Record로 구성된 파일이다. 키 M을 트리 형태로 표현하고 검색하는 과정을 기술하시오.
63. 다음은 17개의 Record로 구성된 파일이다. Key M을 이진 검색(Binary Search)방법으로 찾으시오.
64. 다음 Record에서 Key 값 57을 찾는 과정을 이진탐색(Binary Search)법으로 설명하시오(알고리즘도 작성하시오).
65. 보간 검색(Interpolation Search)에 대해 설명하고 아래 Record에서 보간 검색법을 이용하여 Key값 55를 검색하는 과정을 설명하시오.
66. 블록 검색(Block Search)에 대해 설명하고 다음 16개 Record로 구성된 파일을 블록으로 저장한 형태이다. Key 64를 검색하는 과정을 설명하시오(블록당 Record는 4개).

출판사 서평

Part 1. 자료구조(Data Structure)와 알고리즘(Algorithm)에서는,
자료구조의 형태, 구성 단위, 알고리즘의 정의, 분석, Big-Oh(O) 표기법, 시간 복잡도와 공간 복잡도, 반복문, 연산수, 매개변수 전달 방법, Call-by-value, Call-by-reference, Call-by-name에 대한 내용으로 작성했습니다. [관련 토픽 - 13개]

Part 2. 재귀함수(Recursion Function)에서는,
재귀호출 알고리즘의 수행 동작, 피보나치 수열(Fibonacci Sequence), 하노이 타워(The Tower of Hanoi)에 대해 학습할 수 있도록 하였습니다. [관련 토픽 - 5개]


Part 3. 배열(Array)과 연결 리스트(Linked List)에서는,
배열의 장단점과 메모리 할당 방법, 배열과 연결 리스트(Linked List) 차이점, Linked List 삽입과 삭제 동작, 이중(Double Linked List) 삽입과 삭제 동작에 대해 쉽게 접근할 수 있도록 답안화 하였습니다. [관련 토픽 - 8개]

Part 4. 스택(Stack)과 큐(Queue)에서는,
Stack의 용어와 연산, Stack 삽입과 삭제, Stack의 Overflow 방지 방법, Queue의 삽입과 삭제, 원형 큐(Circular Queue) Empty, Full 상태, 데크(Deque: Enqueue, Dequeue), 우선 순위 큐(Priority Queue)에 대한 내용을 학습할 수 있도록 하였습니다. [관련 토픽 - 8개]

Part 5. 정렬(Sorting)에서는,
버블 정렬, 선택 정렬, 삽입 정렬, 병합 정렬, 기수 정렬, 2-원 합병 정렬, 쉘 정렬, 퀵 정렬, 힙 정렬, 외부 정렬, 균형병합 정렬 등 정렬 알고리즘의 비교와 특징들을 학습할 수 있도록 답안화 하였습니다. 항상 출제되는 부분으로 많은 관심을 가지고 학습하시기 바랍니다. [관련 토픽 - 23개]

Part 6. 탐색(Search)에서는,
순차 검색, 이진 검색, 보간 검색, 블록 검색, 피보나치 검색, 이진 검색 트리, 해싱(Hashing) 검색, Hashing 충돌과 해결 방법, 검색 알고리즘(Search Algorithm) 성능 및 특징에 대해 학습할 수 있습니다. [관련 토픽 - 14개]

Part 7. 산술식 표현과 트리(Tree)에서는,
Tree의 용어, Tree의 유형 및 삽입과 삭제, Thread 이진 트리, 운행 방법, 메모리 저장, AVL Tree 구성 및 균형(LL, LR, RL, RR 회전), 2-3 Tree, 2-3-4 Tree, Red Black Tree, m-원 탐색 Tree, B-Tree, B*-Tree, B+-Tree, T-Tree 삽입 삭제에 대해 실제 예를 들어 설명한 부분으로 이해 위주로 학습할 수 있도록 기술하였습니다. 매번 출제되는 중요한 토픽들입니다. [관련 토픽 - 41개]

Part 8. 그래프(Graph)에서는,
Graph의 용어 및 종류, 인접 행렬과 인접 List 표현법, 깊이 우선 검색(DFS: Depth - First Search), 넓이 우선 검색(BFS: Breadth - First Search), 최소신장 트리(Minimal Spanning Tree)알고리즘, Prim’s / Kruskal’s / Sollin’s 알고리즘에 대한 내용으로 작성했습니다. [관련 토픽 -14개]

Part 9. 기타 알고리즘에서는,
DMA 동작에 대한 Flow Chart 작성, Buffer 크기에 따른 영향, Dekker 알고리즘, Peterson 알고리즘, Process 병행시의 인터리빙(Interleaving), Two phase Locking, 직렬 불가능(Non-serialization)을 직렬화, 기계학습 및 Agent를 설명한 부분으로 이해 위주로 학습할 수 있도록 기술하였습니다. [관련 토픽 - 17개]

Part 10(부록). 알고리즘 Source Code에서는,
1파트부터 7파트까지 학습하는 데 참조가 되는 Source Code를 수록하였습니다. 관련된 알고리즘 소스코드는 총 22개로 다음과 같습니다. Binary변환, Callbyname, Callbyreference, Callbyvalue, FactorialN, FibonacciCode, FibonacciSequence, TheTowerOfHanoi, DoubleLinkedListInsertDelete, LinkedListOrderedInsertDeletePrint, QueueInsertDelete, stackPushPop, Bubble_Flag, Bubble_noFlag, BubbleSort, InsertSort, QuickSort, SelectionSort, BinarySearch, InterpolationSearch, SequentialSearch, Tree 순회 등 총 22개 알고리즘 소스를 수록하였고 Visual Studio 환경에서 정상적으로 실행된 Source Code입니다. [관련 Source Code ? 22개]