정보처리기사 2과목 소프트웨어 개발 (데이터 입출력 구현)
Section 1. 자료구조
1. 자료구조란 ?
데이터의 연산을 효율적으로 수행하기 위해 동일한 타입의 데이터를 정리하여 저장하는 구조 /방법/기법
2. 자료구조의 분류
- 선형 구조 - 리스트, 스택, 큐 ,데크
- 비선형 구조 - 트리, 그래프
- 선형리스트(배열)
- 연속적인 메모리 공간, 삽입과 삭제시에 나머지 요소들 이동으로 효율이 낮음, 빈공간이 존재함
- 연결리스트
- 임의의 기억 공간에 저장, 포인터로 연결
- 삽입과 삭제시에 용이함, 희소행렬에 유리
- 스택 (Stack)
- 한 쪽에서만 삽입과 삭제
- LIFO(Last In First Out) 후입선출
- 미로찾기, 깊이우선탐색, 수식연산
- Push / Pop 연산과 Top 포인터
* 예제) 순서가 A, B, C, D로 정해진 입력 자료를 스택에 입력하였다가 B, C, D, A 순서로 출력하는 과정
- 큐 (Queue)
- Rear에서는 삽입 Front에서는 삭제가 이루어짐
- 입력의 제한을 갖는 Scroll, 출력의 제한을 갖는 Shelf
- 데크 (Deque)
- 양쪽 끝에서 삽입 / 삭제 둘 다 가능
- 트리 (Tree)
- 계층적 자료구조로 싸이클이 없는 그래프
- N개의 노드로 구성된 트리는 N-1개의 간선
- 노드의 크기 - 자신 포함 자손의 노드의 개수
- 노드의 깊이 - 루트 노드에서 노드까지의 간선의 개수
- 노드의 레벨 - 루트 노드를 1로하고 아래의 자식은 1씩 증가
- 노드의 차수 - 기준이 되는 노드의 자식 수 (간선수)
- 트리의 차수/높이 - 가장 큰 차수, 가장 큰 높이
- 그래프
- 특정 집단 내 각각의 단위정보(정점)를 링크(간선)로 연결하여 표현한 자료구조
- N개의 정점을 갖는 방향 그래프의 최대 간선 수는 n(n-1)개
- N개의 정점을 갖는 무방향 그래프의 최대 간선 수는 n(n-1)/2개
3. 트리의 순회 중요 !!
- 전위 순회 (Preorder) - 노드 -> 왼쪽 서브트리 -> 오른쪽 서브트리
- 중위 순회 (Inorder) - 왼쪽 서브트리 -> 노드 -> 오른쪽 서브트리
- 후위 순회 (Postorder) - 왼쪽 서브트리 -> 오른쪽 서브트리 -> 노드
예제 ) 중위 순회 : D, B, A, E, C, F
전위 순회 : A, B, D, C, E, F
후위 순회 : D, B, E, F, C, A
Section 2. 소스코드 인스펙션
1. 소스코드 인스펙션이란 ?
성능 향상을 위해 코드를 보면서 문제점을 개선하는 것
2. 소스코드 인스펙션 대상
① 사용되지 않는 변수
② 사용되지 않는 서브쿼리
③ Null 값과 비교
④ 과거의 데이터 타입 사용
3. 코드 인스펙션 절차
- 계획 -> 개관 -> 준비 -> 검사 -> 재작업 -> 추적
4. 클린코드
- 다른 사람이 읽기 쉽고, 고치기 쉽게 만든 코드 (가독성↑)
- 단순하고 직접적
- 설계자의 의도를 숨기지 않는다
- 개체가 한가지 작업 (기능)을 수행한다
5. 스파게티 코드
소스 코드가 복잡하게 얽힌 모습을 스파게티의 면발에 비유. 작동은 정상적이지만 가독성은 낮다.
6. 외계인 코드 (Alien Code) 자주 나옴 !!
아주 오래되거나 참고 문서 또는 개발자가 없어 유지보수 작업이 어려운 프로그램 코드