본문 바로가기
IT License/정처기-2과목

2024 #정보처리기사 필기요약 #2-1. 데이터 입출력 구현

by 시뮝 2024. 7. 5.
728x90

제 2과목 소프트웨어 개발 > 데이터 입출력 구현


(1) 논리 데이터 저장소 확인

자료 구조(Data Structure) [2021년 1회, 3회] 2022년 1회] [2023년 3회]

  • 자료 구조는 컴퓨터상 자료를 효율적으로 저장하기 위해 만들어진 논리적인 구조이다.
  • 자료 구조의 분류는 선형 구조와 비선형 구조로 크게 나뉜다.
구조 설명 종류
선형 구조 데이터를 연속적으로 연결한 자료 구조 리스트, 스택, 큐, 데크
비선형 구조 데이터를 비연속적으로 연결한 자료 구조 트리, 그래프

 

선형 구조 > 리스트(List)

개념 설명
선형 리스트
(Linear List)
배열과 같이 연속되는 기억 장소에 저장되는 리스트
연결 리스트
(Linked List)
노드의 포인터 부분으로 서로 연결시킨 리스트

노드의 삽입이나 삭제가 쉽다.
노드들이 포인터(Pointer)로 연결되어 포인터를 찾아가는 시간이 필요하므로 선형 리스트에 비해 검색 속도가 느리다. [2022년 3회]
연결을 해주는 포인터를 위한 추가 공간이 필요하다.
연결 리스트 중에서 중간 노드 연결이 끊어지면 그 다음 노드를 찾기 힘들다.

 

선형 구조 > 스택(Stack)

스택 특징 [2021년 1회] [2022년 1회] [2023년 1회]

  • 스택(Stack)은 한 방향으로만 자료를 넣고 꺼낼 수 있는 LIFO(Last-In First-Out) 형식의 자료 구조이다. [2022년 2회]
  • 한 방향으로만 PUSH와 POP을 이용하여 자료를 넣고 꺼낸다.
  • TOP은 스택에서 가장 위에 있는 데이터로, 스택 포인터(Stack Pointer)라고도 불린다.
  • 인터럽트 처리, 서브루틴 호출 작업 등에 응용된다.

스택의 응용 분야 [2022년 3회]

  • 함수 호출의 순서 제어
  • 인터럽트의 처리
  • 수식 계산 및 수식 표기법
  • 컴파일러를 이용한 언어 번역
  • 부 프로그램 호출 시 복귀 주소 저장
  • 서브루틴 호출 및 복귀 주소 저장

스택 연산 [2022년 1회] [2023년 1회, 3회]

  • PUSH: 데이터를 차례대로 스택에 넣는 연산
  • POP: 스택에서 가장 위에 있는 데이터를 하나씩 꺼내는 연산
출제 2022년 1회, 2023년 3회
문제 스택에서 순서가 A, B, C, D로 정해진 입력 자료를, 
push → push → pop → push → push → pop → pop → pop 으로 연산 했을 때 출력 결과는?
풀이 스택 A → AB → A → AC → ACD → AC → A → ''
출력  →  → B →  →  → BD → BDC → BDCA
답안 BDCA
출제 2021년 3회, 2022년 3회, 2023년 1회
문제 스택에서 순서가 A, B, C, D로 정해진 입력 자료를 스택에 입력한 후출력한 결과로 불가능한 것은?
보기 ① D, C, B, A
② B, C, D, A
③ C, B, A, D
④ D, B, C, A
답안 정답은 ④번이다.
D를 먼저 꺼내려면 모두 push한 뒤 pop 하여야 하는데 그 뒤엔 C만 출력될 수 있기 때문이다.

+) DABC 역시 마찬가지 이유로 불가능하다.

스택의 자료 삭제 알고리즘 [2021년 3회]

if Top = 0 Then
    Underflow
Else {
    remove S(Top)
    Top = Top - 1
}

 

선형 구조 > 큐(Queue)

  • 큐(Queue)는 한쪽 끝에서는 삽입 작업이 이뤄지고, 반대쪽 끝에서는 삭제 작업이 이루어지는 FIFO(First-In First-Out) 형식의 자료 구조이다.
  • 한쪽에서는 ENQUEUE 연산을 이용하여 데이터를 넣고, 한쪽에서는 DEQUEUE 연산을 이용하여 데이터를 꺼낸다.
  • 데이터가 꺼내는 쪽에서 가장 가까운 데이터를 Front라고 하고, 데이터를 넣는 쪽에서 가장 가까운 데이터를 Rear라고 한다.
  • 큐 연산
    • ENQUEUE: 데이터를 차례대로 넣는 연산
    • DEQUEUE: 처음 저장된 데이터부터 하나씩 꺼내는 연산

 

선형 구조 > 데크(Deque)

  • 데크(Deque; Double Ended Queue)는 큐의 양쪽 끝에서 삽입과 삭제를 할 수 있는 자료 구조이다.
  • 두 개의 포인터를 사용하여, 양쪽의 삭제/삽입이 가능하다.
  • 데크를 이용한 스택과 큐의 구현이 가능하다.
  • 데크연산
    • PUSH: 데이터를 차례대로 데크에 넣는 연산
    • POP: 데크에서 Front와 Rear에 있는 데이터를 하나씩 꺼내는 연산

 

비선형 구조 > 트리

  • 트리(Tree)는 데이터들을 계층화시킨 자료 구조이다.
  • 인덱스를 조작하는 방법으로 가장 많이 사용하는 구조이다.
  • 트리는 노드(Node)와 노드를 연결하는(Link)로 구성된다.
  • 배열과 달리 노드들이 포인터로 연결되어 노드의 상한선이 없다.

트리(Tree) 용어

용어 설명
루트 노드(Root Node) 트리에서 부모가 없는 최상위 노드, 트리의 시작점
단말 노드(Leaf Node) 자식이 없는 노드, 트리의 가장 말단에 위치
레벨(Level) 루트 노드를 기준으로 특정 노드까지의 경로 길이
조상 노드(Ancestor Node) 특정 노드에서 루트에 이르는 경로상 모든 노드
자식 노드(Child Node) 특정 노드에서 연결된 다음 레벨의 노드
부모 노드(Parent Node) 특정 노드에 연결된 이전 레벨의 노드
형제 노드(Sibling) 같은 부모를 가진 노드
깊이(Depth) 루트 노드에서 특정 노드에 도달하기 위한 간선의 수
차수(Degree) 특정 노드에 연결된 자식 노드의 수

트리 순회방법

구분 개념도 순회방법
전위 순회
(Pre-Order Traversal)
Root → Left → Right
최상위 → 좌 → 우
중위 순회
(In-Order Traversal)
Left → Root → Right
좌 → 최상위 →우
후위 순회
(Post-Order Traversal)
Left → Right → Root
좌 → 우 최상위

트리 순회방법 예시 바로가기

 

2021 #정보처리기사 필기요약 #2-1. 트리 순회방법, 차수 구하기

읽기전 참고사항 특정 노드를 언급하지 않고 트리의 차수를 구하는 경우 전체 트리에서 가장 큰 차수를 가지는 값을 구합니다. 노랑 마킹은 시험에 출제된 적이 있는 트리와 질문입니다. 회색

simuing.tistory.com

 

이진 트리

차수(Degree)가 2 이하인 노드로 구성되어 자식이 둘 이하로 구성된 트리이다.

이진 트리 유형 개념도 설명
포화 이진 트리
(Full Binary Tree)
모든 레벨의 노드가 채워진 트리
완전 이진 트리
(Complete Binary Tree)
마지막 레벨을 제외하고
노드가 채워진 트리
편향 이진 트리
(Skewed Binary Tree)
노드의 왼쪽이나 오른쪽
한 곳만 노드가 존재하는 트리

 

비선형 구조 - 그래프

  • 그래프(Graph)는 노드(N; Node)와 노드를 연결하는 간선(E; Edge)을 하나로 모아 놓은 자료 구조이다.
  • 트리(Tree)는 사이클이 없는 그래프이다.

그래프의 유형

  • 방향 그래프: 정점을 연결하는 선에 방향이 있는 그래프, 최대 간선 수 = n(n-1)
  • 무방향 그래프: 정점을 연결하는 선에 방향이 없는 그래프, 최대 간선 수 = n(n-1)/2

그래프의 표현방법

  • 그래프 G = (V, E)
  • V(G) = 정점(Vertices)
  • E(G) = 간선(Edges)

그래프 용어

  • 경로(Path) / 경로 길이(Path Length) / 단순 경로(Simple Path) / 사이클(Cycle)

논리 데이터 저장소

  • 업무를 모델링 표기법으로 형상화한 데이터의 저장소이다.

논리 데이터 저장소 구조 (개속관)

구조 설명 표기
체 (Entity) 관리할 대상이 되는 실체
성 (Attribute) 관리할 정보의 구체적 항목
계 (Relationship) 개체 간의 대응 관계

(2) 물리 데이터 저장소 설계

물리 데이터 저장소는 논리 데이터 모델을 사용하고자 하는 각 DBMS의 특성을 고려하여 데이터베이스 저장 구조(물리 데이터 모델)로 변환하기 위한 데이터 저장소이다.

물리 데이터 저장소 구성

  • 테이블 제약조건(Constraint) 설계
  • 인덱스(Index) 설계
  • 뷰(View) 설계
    • 속성: REPLACE, FORCE, NOFORCE, WITH CHECK OPTION, WITH READ ONLY
  • 클러스터(Cluster) 설계
  • 파티션(Partition) 설계
    • 종류 (레해리컴)이지 파티셔닝 / 시 파티셔닝 / 스트 파티셔닝 / 포지트 파티셔닝
    • 장점 (성가백합)능 향상 / 용성 향상 / 업 가능 / 경 감소
  • 디스크(Disk) 구성 설계

물리 데이터저장소  모델 변환 절차

  1. 단위 개체를 테이블로 변환
  2. 속성을 컬럼으로 변환
  3. UID를 기본 키로 변환
  4. 관계를 외래 키로 변환
  5. 컬럼 유형과 길이 정의
  6. 반정규화 수행

 

반 정규화 수행 방법

구분 종류 설명
테이블 통합 슈퍼타입/서브타입
테이블 통합
1:1 관계, 1:M 관계를 통합하여 조인 횟수를 줄여 성능 향상
슈퍼타입/서브타입 테이블 통합을 통해 성능 향상
테이블 분할 (파티셔닝) 수평 분할 레코드 단위 분할
수직 분할 컬럼 단위 분할
중복 테이블 추가 집계 테이블 추가 집계 데이터를 위한 테이블 생성, 각 원본 테이블에 트리거를 설정하여 사용하는 것. 트리거의 오버헤드 유의 필요
진행 테이블 추가 이력 관리 등의 목적으로 추가하는 테이블, 기본키 설정
특정 부분만을
포함하는 테이블 추가
데이터가 많은 테이블의 특정 부분만을 사용하는 경우 해당 부분만으로 새로운 테이블 생성
컬럼 중복화 중복 허용 조인 성능 향상을 위한 중복 허용

ORM 프레임워크

ORM(Object-Relational Mapping) 프레임워크는 관계형 데이터베이스와 객체지향 프로그래밍 언어 간 호환되지 않는 데이터를 변환하는 프로그래밍 기법이다.

ORM 프레임워크 기술 유형

  • SQL Mapping
  • OR Mapping

ORM 프레임워크 절차

  1. 클래스 → 테이블 변환
  2. 애트리뷰트 → 컬럼 변환
  3. 클래스 간 관계 → 테이블 간 관계 변환

ORM 프레임워크 종류

  • 부분적 ORM
  • 완전 ORM

트랜잭션 인터페이스

  • 트랜잭션 인터페이스(Transaction Interface)는 데이터베이스 트랜잭션의 입출력과 기능 형태를 정의한 인터페이스이다.
  • 트랜잭션 인터페이스는 ACID 원칙을 기반으로 설계된다.

트랜잭션 인터페이스 특징

원자성(Automicity) / 일관성(Consistency) / 격리성(Isolation) / 영속성(Durability)

트랜잭션 인터페이스 설계

  • 데이터 접근 방법 및 인터페이스를 절차적으로 명세한다.
  • 대표적 사례: JDBC, ODBC 등

(3) 데이터 조작 프로시저 작성

프로시저

  • 프로시저(Procedure)는 일련의 쿼리들을 마치 하나의 함수처럼 실행하기 위한 쿼리의 집합이다.
  • 데이터베이스 내부에 저장되고 일정한 조건이 되면 자동으로 수행된다.

절차형 데이터 조작 프로시저

  • Oracle 기반 PL/SQL
    • 개념: 표준 SQL을 기본으로 Oracle에서 개발한 데이터 조작 언어
    • 장점: 컴파일 불필요, 모듈화 가능, 절차적 언어 사용, 에러 처리
    • 구성: 선언부(Declare), 실행부(Begin/End), 예외부(Exception)
  • PL/SQL을 활용한 저장형 객체 활용 (프함패트)
    • 저장된 로시저(Stored Procedure)
    • 저장된 수(Stored Function)
    • 저장된 키지(Stored Package)
    • 리거(Trigger)

프로그램 디버깅

  • 프로시저가 입력 자료를 받아 출력을 올바르게 도출하는지에 관한 확인 과정

단위 테스트 도구

  • 단위 테스트에서 구현된 프로시저의 적합성을 확인하기 위한 도구

PL/SQL 테스트

  • DBMS_OUTPUT 패키지를 사용한다.

DBMS_OUTPUT 패키지 기능

명령어 설명
DBMS_OUTPUT.DISABLE 메시지 버퍼 내용 삭제
DBMS_OUTPUT.ENABLE 메시지 버퍼 내용 할당
DBMS_OUTPUT.PUT 하나의 라인을 여러 번에 걸쳐 저장
DBMS_OUTPUT.PUT_LINE PUT과 동일하나 버퍼에 저장되는 메시지의 마지막 라인 끝에 EOL 문자를 추가
DBMS_OUTPUT.GET_LINE 한 번 호출할 때마다 하나의 라인만을 읽어옴
DBMS_OUTPUT.GET_LINES 지정된 라인을 모두 읽어들임

(4) 데이터 조작 프로시저 최적화

쿼리(Query) 성능 측정

데이터베이스에서 프로시저에 있는 SQL 실행 계획을 분석, 수정을 통해 최소의 시간으로 원하는 결과를 얻도록 프로시저를 수정하는 사전 작업이다.

실행계획(EXPLAIN PLAN) 기반 쿼리 성능 측정

SQL 문의 성능개선을 할 수 있도록 SQL 문을 분석 및 해석하여 실행계획을 수립하고, 연관 테이블(plan-table)에 저장하도록 지원하는 도구이다.

SQL 성능 개선 절차

  1. 문제 있는 SQL 식별
  2. 옵티마이저 통계 확인
  3. SQL문 재구성
  4. 인덱스 재구성
  5. 실행계획 유지관리

소스 코드 인스펙션(Source Code Inspection)

  • 데이터베이스 성능 향상을 위하여 프로시저 코드를 보면서 성능 문제점을 개선해 나가는 활동이다. [2023년 3회]
  • 데이터 조작 프로시저 최적화를 위한 SQL 코드 인스펙션이 있다.
  • 프로그램을 수행시켜 보는 것 대신에 읽어보고 눈으로 확인하는 방법으로 볼 수 있다.
  • 코드 품질 향상 기법 중 하나이다.
  • 정적 테스트 시에만 활용하는 기법이다. [2022년 1회]
  • 결함과 함께 코딩 표준 준수 여부, 효율성 등의 다른 품질 이슈를 검사하기도 한다.

소스 코드 오류 종류

데이터 오류
(DA; Data Error)
데이터 유형 정의, 변수 선언, 매개 변수 등에서 나타나는 오류이다.
기능 오류
(FN; Function Error)
서브루틴이나 블록이 잘못된 것(What)을 수행하는 오류이다. [2023년 3회]
논리 오류
(LO; Logic Error)
서브루틴이나 블록이 수행하는 방법(How)이 잘못되어 있는 오류이다.
성능오류
(PF; Performance Error)
프로그램을 수행하며 요구되는 성능을 만족시키지 못하는 오류이다.
문서 오류
(DC; Documentation Error)
프로그램 구성 요소인 선언 부분, 잘못되거나 불필요한 주석 등을 의미한다.

SQL 코드 인스펙션

  • 대상: 미사용 변수 / 미사용 서브쿼리 / Null 값 비교 / 과거의 데이터 타입 사용
  • 절차: 계획 → 개관 → 준비 → 검사(인스펙션 회의) → 재작업 → 추적 [2022년 2회]

트리 순회방법 예시 바로가기

 

2021 #정보처리기사 필기요약 #2-1. 트리 순회방법, 차수 구하기

읽기전 참고사항 특정 노드를 언급하지 않고 트리의 차수를 구하는 경우 전체 트리에서 가장 큰 차수를 가지는 값을 구합니다. 노랑 마킹은 시험에 출제된 적이 있는 트리와 질문입니다. 회색

simuing.tistory.com

 

 

 

728x90

댓글