본문 바로가기
Data Analysis/정보처리기사

[2과목 소프트웨어 개발] 01. 데이터 입출력 구현

by suvii 2024. 4. 18.

[Sec 1. 자료 구조]

선형 구조

 - 배열(Array) : 데이터 연속 배치

 - 리스트(List) : 간편, 효율, 빠름, 인덱스 사용으로 포인터가 없음 → 자료의 삽입, 삭제가 어려움

 - 연결 리스트 : 각 노드는 링크(Pointer) 정보를 가짐  자료의 삽입, 삭제가 용이함, 선형 리스트에 비해 느림

 - 스택(Stack) : 한 쪽 끝에서만 자료의 삽입(Push)과 삭제(Pop)가 이루어지는 자료구조

    후입선출(LIFO) 구조, Top이라는 포인터 사용, Overflow, Underflow 발생 가능

 - 큐(Queue) : 한 쪽 끝에서 삽입(enQueue), 반대쪽 끝에서 삭제(deQueue)

    선입선출(FIFO) 구조, 삽입 시 Rear 포인터, 삭제 시 Front 포인터

 - 데크(Deque) : 입력/삭제가 양쪽 끝에서 모두 발생할 수 있는 자료구조

    Scroll(입력제한 데크) : 입력은 한쪽에서만, 출력은 양쪽에서

    Shelf(출력제한 데크) : 입력은 양쪽에서, 출력은 한쪽에서만

 

비선형 구조

 - 트리(Tree) : 노드와 간선으로 구성, 부모-자식 관계의 계층적 구조

   순회 방법

    - 중위 순회(Inorder) : 왼쪽 자식 → 부모 → 오른쪽 자식

    - 후위 순회(Postorder) : 왼쪽 자식 → 오른쪽 자식 → 부모

    - 전위 순회(Preorder) : 부모 → 왼쪽 자식 → 오른쪽 자식

   트리 종류 : 이진 트리, 완전 이진 트리, 포화 이진 트리, 편향 이진 트리, 균형 이진 트리, 이진 탐색 트리, AVL 트리, B-트리, 신장 트리

    - 깊이가 H인 이진 트리의 최대 노드 수/포화 이진트리의 노드 수 : 2ᴴ-1

    - 특정 레벨 L에서의 최대 노드 수/포화 이진트리의 노드 수 : 2⁽ᴸ⁻¹⁾

 

- 그래프(Graph)

   종류

    - 무방향 그래프 : 최대 간선 수 = n(n-1)/2

    - 방향 그래프 : 최대 간선 수 = n(n-1)

   표현 방법

    - 인접 행렬 : 그래프의 정점을 2차원 배열로 만든 것

    - 인접 리스트 : 인접한 정점들을 연결 리스트로 표현

   순회 방법

    - 깊이 우선 탐색(DFS) : 스택 이용 (깊스)

    - 너비 우선 탐색(BFS) : 큐 이용   (바비큐)

 

수식 표기법

 - 중위 표기법 : A+B

 - 전위 표기법 : +AB

 - 후위 표기법 : AB+

 

해싱 : 주어진 키를 해시함수에 대입해 나온 해시값을 인덱스로 사용하여 데이터에 직접 접근

 - 해시 테이블

    버킷 : 저장 공간, 행

    슬롯 : 버킷 내 개별적인 공간

    충돌 : 서로 다른 키가 같은 버킷 또는 슬롯에 할당되려고 할 때

    동의어 : 충돌로 인해 같은 버킷이나 슬롯을 공유하게 되는 키

    오버플로 : 더 이상 데이터를 저장할 수 없는 상태

     - 개방 주소법 : 해시 테이블 내의 다른 위치를 순차적으로 검색 (다른 공간도 열어두고 검색)

     - 폐쇄 주소법 : 해당 버킷의 끝에 레코드 연결 (다른 공간은 막아두고 레코드 연결)

     - 재해싱 : 다른 해시 함수를 사용하여 새로운 주소 계산

 - 해싱 함수 종류

    제산법(Division)

    중간 제곱법(Mid Square)

    중첩법(Folding)

    숫자 분석법(Digit Analysis)

    기수 변환법(Radix Exchange)

    무작위 방법(Pseudo Random)

 

 

[Sec 2. 데이터 조작 프로시저 작성]

프로시저 : 데이터베이스 내에 저장되어 자동 실행되는 일련의 SQL 쿼리 집합

 - 저장형 객체

    Stored Function : IN

    Stored Procedure : IN, OUT, INOUT

    Stored Package : 프로시저와 함수 모음

    Trigger

     - 행 트리거 : FOR EACH ROW, 각 행에 발생할 때마다 실행

     - 문장 트리거 : 한 번만 실행

 

ORM 프레임워크 : 객체지향 프로그래밍과 관계형 데이터베이스 간의 호환성 격차 해결 목적

 - SQL Mapper : iBatis, Mybatis, jdbc Templetes

 - QR Mapping(ORM) : JPA, Hibernate

 

 

[Sec 3. 데이터 조작 프로시저 최적화]

쿼리 성능 측정 : 응답 시간, CPU, 메모리 사용량 등

 - SQL 처리 흐름 : 구문 분석 → 실행 → 인출(SELECT문에서)

 - SQL 성능 개선 절차

   문제 식별 → 통계 확인 → SQL문 재구성 → 인덱스 재구성 → 실행 계획 유지 관리

 - 코드 인스펙션 절차

   계획 → 개관(사전 교육) → 준비 → 검토(인스펙션) → 재작업(수정) → 추적(후속 조치)