카테고리 없음

[정보처리기사 필기] 시나공 2025년대비 값만 다르게 매번 출제되는 필수 계산 41문제 공부

growupwithme 2025. 1. 31. 20:27

시나공 정보처리기사 필기 자료 - 값만 다르게 매번 출제되는 필수 계산 41문제

[시나공] 정보처리 기사 필기 - 기출문제

 

릴레이션 : 표

카디널리티 : 튜플의 수

차수(Degree) : 속성 수

도메인 : 하나의 속성이 취할 수 있는 (원자)값들의 집합

 

<기억장치 관리 - 배치 전략>

First Fit(최초 적합) : 배치 가능한 빈 영역 중 첫 번째 분할 영역에 배치시키는 법

Best Fit(최적 적합) : 배치 가능한 빈 영역 중 내부 단편화를 가장 작게 남기는 분할 영역에 배치시키는 법

Worst Fit(최악 적합) : 배치 가능한 빈 영역 중 내부 단편화를 가장 많이 남기는 분할 영역에 배치시키는 법

* 내부 단편화 : 프로그램이 할당된 후 사용되지 않고 남아 있는 빈 공간

 

<정렬>

Bubble Sort(버블 정렬) : 앞에서부터 인접한 두 개의 레코드 키 값을 비교하여 크기에 따라 작은 값을 앞에 배치하기 위해 위치를 서로 교환하는 정렬 방식

ex) 초기 상태 : 85624
  1회전 - 85624 => [58624 -> 56824 -> 56284 -> 56248]  결과 : 56248
  2회전 - 56248 => [52648 -> 52468]  결과 : 52468
  3회전 - 52468 => [25468 -> 24568]  결과 : 24568
  4회전 - 24568

 

Selection Sort(선택 정렬) : n회전마다 n번째 레코드와 n번째 레코드 뒤에 값을 차례대로 비교하면서 최소값을 n번째 레코드에 위치치키는 정렬 방식

ex) 초기 상태 : 85624
  1회전 : 85624 => [58624 -> 58624 -> 28654 -> 28654]  결과 : 28654
  2회전 : 28654 => [26854 -> 25864 -> 24865]  결과 : 24865
  3회전 : 24865 => [24685 -> 24586]  결과 : 24586
  4회전 : 24586 => [24568]  결과 : 24568

 

Insert Sort(삽입정렬) : n+1번째 레코드를 앞의 값과 비교하여 삽입위치 지정 후 다른 레코드를 한 칸씩 밀고 해당 위치에 삽입하는 정렬 방식

ex) 초기 상태 85624
  1회전 : 85624 -> 58624  ( 5를 8과 비교 후 5를 8 앞으로 삽입)
  2회전 : 58624 -> 56824  (6을 5,8과 비교 후 6을 8 앞에 삽입)
  3회전 : 56824 -> 25684  (2를 5,6,8과 비교 후 2를 5 앞으로 삽입)
  4회전 : 25684 -> 24568  (4를 2,5,6,8과 비교 후 4를 5 앞으로 삽입)
* 만약 n회전 때 n+1번째 레코드 위치 변화가 없으면 바로 다음 회전으로 넘어감

 

 

<프로젝트 일정 계획 기법>

CPM(Critical Path Method, 임계 경로 기법)

: 프로젝트 완성에 필요한 작업을 나열하고, 작업에 필요한 소요 기간을 예측하는데 사용하는 기법

○ 원형노드 - 각 작업 의미

○  박스 노드 - 이정표 의미

○  간선 - 작업 사이의 전후 의존 관계

  * 이전 작업이 완료된 후 다음 작업을 진행할 수 있

○  임계 경로 : 최장 경로 의미

 

PERT(Program Evaluation and Review Technique, 프로그램 평가 및 검토 기술)

: 프로젝트에 필요한 전체 작업의 상호 관계를 표시하는 네트워크로 각 작업별로 낙관적인 경우, 가능성이 있는 경우, 비관적인 경우로 나누어 각 단계별 종료 시기를 결정하는 방법

○ 작업 예측치 = (비관치 + 4*기대치 + 낙관치) / 6

○ 평방 편차 = {(비관치 - 낙관치) / 6}^

○ 원 노드 - 각 작업 의미

○ 간선 - 낙관치, 기대치, 비관치를 순서대로 표시

○ 과거에 경험이 없어 소요 기간 예측이 어려운 소프트웨어에서 사용

 

간트 차트(Time-Line Chart, 시간선 차트)

: 프로젝트 작업 일정을 막대 도표를 이용하여 표시하는 프로젝트 일정표

○ 중간 목표 미달성 시 그 이유와 기간 예측 가능

○ 다양한 형태로 변경하여 사용할 수 있어 자원 배치나 인원 계획에도 유용하게 사용 가능

○ 작업 경로 표시 X, 계획의 변화에 대한 적응성 약함

○ 이정표, 작업 일정, 작업 기간, 산출물로 구성

○ 계획 수립 또는 수정 때 주관적 수치에 기울어지기 쉬움

○ 사용자와의 문제점이나 예산의 초과 지출 등도 관리할 수 있음

 

 

<세그먼트>

세그먼트 : 프로그램을 배열이나 함수 등과 같은 논리적인 크기로 나눈 단위, 각 세그먼트는 고유한 이름과 크기 존

세그먼테이션(Sagmentation) 기법 : 가상기억장치에 보관되어 있는 프로그램을 다양한 크기의 논리적인 단위로 나눈 후 주 기억장치에 적재시켜 실행시키는 기법

○ 주소 변환을 위해서 세그먼트가 존재하는 위치 정보를 가지고 있는 세그먼트 맵 테이블이 필요

○ 내부 단편화는 발생하지 않으나 외부 단편화는 발생할 수 있음

  물리 주소 = 세그먼트의 시작주소 + 변위값

  논리 주소(세그먼트 번호, 변위값) 으로 표시

 

 

<페이지 교체 알고리즘>

LRU(Least Recently Used) : 최근에 가장 오랫동안 사용하지 않은 페이지를 교체

LFU(Least Frequently Used) : 사용 빈도가 가장 적은 페이지를 교체

OPT(OPTimal replacement, 최적 교체) : 앞으로 가장 오랫동안 사용하지 않을 페이지를 교체

FIFO(First In First Out) : 가장 오래 있었던 페이지를 교체

SCR(Second Chanve Replacement, 2차 기회 교체) : FIFO 기법의 단점 보완하는 기법, 가장 오래 있었던 페이지 중 자주 사용되는 페이지의 교체를 방지하기 위한 것

NUR(Not Used Recently) : 최근에 사용하지 않은 페이지를 교체, LRU에서 나타나는 시간적인 오버헤드 줄임, 최근 사용 여부 확인을 위해 각 페이지마다 참조 비트와 변형 비트가 사용됨

* 페이지 결함 - 참조 페이지가 페이지 테이블에 없을 경우 페이지 결함(부재) 발생

 

 

<블랙박스 테스트>

블랙박스 테스트 : 소프트웨어가 수행할 특정 기능을 알기 위해 각 기능이 완전히 작동되는 것을 입증하는 테스트

소프트웨어 인터페이스에서 실시되는 기능 테스트

테스트 과정의 후반부에 적용

 

-종류

동치 분할 검사(Equivalence Partitioning Testing, 동치 클래스 분해)

: 입력 자료에 초점을 맞춰 테스트 케이스를 만들어 검사하는 방법,

  타당한 입력 자료와 타당하지 않은 입력 자료를 통해 해당 입력자료에 맞는 결과가 출력되는지 확인하는 기법

경계값 분석(Boundary Value Analysis)

: 입력 조건의 경계값을 테스트 케이스로 선정하여 검사하는 기법, 입력 자료에만 치중한 동치 분할 검사 기법 보완

원인-효과 그래프 검사(Cause-Effect Graphing Testing)

: 입력 데이터 간의 관계와 출력에 영향을 미치는 상황을 체계적으로 분석한 다음 효용성이 높은 테스트 케이스를 선정하여 검사하는 기법

오류 예측 검사(Error Guessing)

: 과거의 경험이나 확인자의 감각으로 테스트하는 기법, 보충적 검사 기법이며 데이터 확인 검사라고도 함

비교 검사(Comparison Testing)

: 여러 버전의 프로그램에 동일한 테스트 자료를 제공하여 동일한 결과가 출력되는지 테스트하는 기법

 

 

<관계대수>

관계대수 : 관계형 데이터베이스에서 원하는 정보를 검색하기 위한 절차적인 언어

피연산자도 릴레이션, 결과도 릴레이션임

-종류

 순수 관계 연산자

   Select(σ) - 튜플 중에서 선택 조건을 만족하는 튜블의 부분합을 구하여 새로운 릴레이션을 만드는 연산

   Project(π) - 속성 리스트에 제시된 속성 값만을 추출하여 새로운 릴레이션을 만드는 연산, 단 중복 제거

                     릴레이션의 열(세로)에 해당하는 속성을 추출하는 것이므로 수직 연산자라고도 함

   Join(▷◁) - 공통 속성을 중심으로 두 개의 릴레이션을 하나로 합쳐서 새로운 릴레이션을 만드는 연산

   Division(÷) - R의 속성이 S의 속성값을 모두 가진 튜플에서 S가 가진 속성을 제외한 속성만을 구하는 연산

 일반 집합 연산자

   Union(합집합,∪) - 두 릴레이션의 합집합을 구하되 중복되는 튜플은 제거되는 연산

   Intersection(교집합,∩) - 두 릴레이션의 교집합을 구하는 연산

   Difference(차집합, -) - 두 릴레이션의 차집합을 구하는 연산

   Cartesian Product(교차곱, ×) - 두 릴레이션에 있는 튜플들의 순서쌍을 구하는 연산

 

 

<리눅스>

umask : UNIX에서 파일이나 디렉터리의 초기 권한을 설정할 때 사용하는 값

파일의 경우 666에서 umask를 뺀 값이 초기 접근 권한

디렉토리의 경우 777에서 umask를 뺀 값 초기 접근 권한

 

 

<주요 스케줄링 알고리즘>

프로세스 스케줄링

FCFS(First Come First Service, 선입 선출)

: 준비상태 큐에 도착한 순서에 따라 차례로 CPU를 할당하는 기법

SJF(Shortest Job First, 단기 작업 우선)

: 준비상태 큐에서 기다리고 있는 프로세스들 중에서 실행 시간이 가장 짧은 프로세스에게 먼저 CPU 할당하는 기법

HRN(Hightest Response-ratio Next)

: 대기 시간과 서비스(실행) 시간을 이용하여 우선순위를 정해 CPU를 할당하는 기법

우선순위 계산식 = (대기 시간 + 서비스 시간) / 서비스 시간

 

디스크 스케줄링

SSTF(Shortest Seek Time First)

: 현재 위치에서 가장 가까운 거리에 있는 트랙의 요청을 먼저 서비스하는 기법

 

 

<LOC 기법>

LOC(원시 코드 라인 수, source Line Of Code) 기법

: 소프트웨어 각 기능의 원시 코드 라인 수의 비관치, 낙관치, 기대치를 측정하여 예측치를 구하고 이를 이용하여 비용을 산정하는 기법

○ 노력(인월) = 개발기간 X 투입 인원 = LOC / 1인당 월평균 생산 코드 라인 수

○ 개발 기간 = 노력(인월) / 투입인원

○ 개발 비용 = 노력(인월) X 단위 비용(1인당 원평균 인건비)

○ 생산성 = LOC / 노력(인월)

 

          노력(인월)

-----------------------------

개발 기간 * 투입 인원

 

 

< 트리>

트리 : 노드와 선분을 이용하여 사이클을 이루지 않도록 구성한 그래프의 특수한 형태

노드(Node): 트리의 기본 요소, 자료 항목과 다른 항목에 대한 가지를 합친 것

근 노드(Root Node) : 트리의 맨 위에 있는 노드

디그리(Degree, 차수) : 각 노드에서 뻗어 나온 가지의 수

단말 노드(Terminal Node) = 잎 노드(Leaf Node) : 디그리가 0인 노드

자식 노드(Son Node) : 어떤 노드에 연결된 다음 레벨의 노드들

부모 노드(Parent Node) : 어떤 노드에 연결된 이전 레벨의 노드들

형제 노드(Bother Node, Sibling) : 동일한 부모를 갖는 노드들

트리의 디그리 : 노드들의 디그리 중에서 가장 많은 수

 

<트리 운행법>

- Preorder(전위 순회) 운행 : Root -> Left -> Right 순으로 운행

  순서 : ABDGHECFIJ

- Inorder(중위 순회) 운행 : Left -> Root -> Right 순으로 운행

  순서 : GDHBEAIFJC

- Postorder(후위 순회) 운행 : Left -> Right -> Root 순으로 운행

  순서 : GHDEBIJFCA

 

<방향/무방향 그래프의 최대 간선 수>

무방향 그래프 - n(n-1)/2

방향 그래프 - n(n-1)

 

<수식 표기법>

- PreFix(전위 표기법) : 연산자 -> Left -> Right

- InFix(중위 표기법) : Left -> 연산자 -> Right

- PostFix(후위 표기법) : Left -> Right -> 연산자

 

  수식 표기법 전환 방법

- Infix를 Prefix나 Postfix로 변환하기

ex)  X = A / B * (C + D) + E

  Prefix로 변환하기

① 연산 우선순위에 따라 괄호로 묶기 => ( X = ( ( ( A / B ) * ( C + D ) ) + E ) )

② 연산자를 해당 괄호 앞으로 옮기기 => = ( X + ( * ( / ( A B ) + ( C D ) ) E ) )

③ 괄호 제거하기 => = X + * / A B + C D E

  Postfix로 변환하기

① 연산 우선순위에 따라 괄호로 묶기 => ( X = ( ( ( A / B ) * ( C + D ) ) + E ) )

② 연산자를 해당 괄호 뒤으로 옮기기 => ( X ( ( ( A / B ) * ( C + D ) ) + E ) )

③ 괄호 제거하기 => X  A B / C D + * E + =

-Postfix나 Prefix를 Infix로 변환하기

  Prefix를 Infix로 변환하기

ex) = X + * / A B + C D E

① 인접한 피연산자 두 개와 왼쪽의 연산자를 괄호로 묶기 => ( = X ( + ( * ( /  A B ) ( + C D ) ) E ) )

② 연산자를 두 피연산자 가운데로 이동 => ( X = ( ( ( A / B ) * ( C + D ) ) + E ) )

③ 필요 없는 괄호 제거하기 => X = A / B * (C + D) + E

  Postfix를 Infix로 변환하기

ex) X  A B / C D + * E + =

① 인접한 피연산자 두 개와 오른쪽의 연산자를 괄호로 묶기 => ( X ( ( ( A B / ) ( C D + ) * ) E + ) = )

② 연산자를 두 피연산자 가운데로 이동 => ( X = ( ( ( A / B ) * ( C + D ) ) + E ) )

③ 필요 없는 괄호 제거하기 => X = A / B * (C + D) + E

 

 

<팬인/팬아웃>

팬인(Fan-In) : 모듈을 제어(호출)하는 모듈의 수

팬아웃(Fan-Out) : 모듈에 의해 제어(호출)되는 모듈의 수

ex) F의 팬인 : 2  팬 아웃 : 1

 

 

<스택>

스택 : 리스트의 한 쪽 끝으로만 자료의 삽입, 삭제 작업가 가능한 자료 구조

○ 스택은 가장 나중에 삽입된 자료가 가장 먼저 삭제되는 후입선출방식으로 자료 처리

○ 오버플로(Overflow) : 스택의 모든 기억 공간이 꽉 채워져 있는 상테에서 데이터가 삽입될 때 발생

○ 언더플로(Underflow) : 삭제할 데이터가 없는 상태에서 데이터를 삭제할 때 발생

 

 

<순환복잡도>

순환복잡도(Cyclomatic) : 한 프로그램의 논리적인 복잡도를 측정하기 위한 소프트웨어의 척도

계산법 ① 내부 영역(n)과 외부영역(1)의 합       ② 화살표 수 - 노드 수 + 2

 

 

<그래프 탐색 방법>

DFS(Depth First Search, 깊이 우선 탐색)

: 시작 노드의 인접한 노드 중 자식 노드 방향으로 운행하며 형제 노드와 자식 노드가 있을 때 자식 노드를 우선 탐색하는 기법

BFS(Breadth First Search, 너비 우선 탐색)

: 시작 노드에서 간선이 1개인 가장 가까운 노드들부터 우선 탐색 후 다음 노드를 탐색하는 기법 

  Tree 구조에서 같은 Level의 노드부터 탐색 후 다음 레벨의 노드 탐색

 

<이분 검색>

이분 검색(Binary Search, 이진 검색) : 첫 번째 값과 마지막 값의 중간 값과 찾으려는 값을 비교하는 검색방식

○ 순서화된 파일에서만 사용 가능

○ M(중간 레코드 번호) = { F(첫 번째 레코드 번호) + L (마지막 레코드 번호) } / 2

 

 

CIDR(Classless Inter-Domain Routing, 클래스 없는 도메인간 라우팅 기법)

: IP 주소와 함께 슬래시(/) 뒤에 숫자를 추가하여 네트워크 주소와 서브넷 마스크를 결합한 형태

○ 슬래시(/) 뒤에 있는 숫자가 서브넷 마스크 1의 개수를 뜻함

서브넷 마스크(Subnet Mask) : 4바이트의 IP 주소 중 네트워크 주소와 호스트 주소를 구분하기 위한 비트

○ 서브넷 마스크를 변경하여 네트워크 주소를 여러 개로 분할하여 사용 가능

○ 서브넷 마스크는 각 클래스마다 다르게 사용됨

○ 서브넷 마스크는 0~255사이의 4개의 숫자와 각 숫자 사이에 온점(.)으로 구성 ex) 255 . 255 . 255 . 192

○  앞에 세개의 숫자는  네트워크 주소, 뒤에 마지막 숫자는 호스트 주소를 나타냄

8비트 10진수
00000000 0
10000000 128
11000000 192
11100000 224
11110000 240
11111000 248
11111100 252
11111110 254
11111111 255

 

IPv4 CIDR 표기법에 대한 이해 - CIDR 계산기