나 개발자 진짜 되냐?

정보처리기사 2과목 정리 _ 소프트웨어 개발 본문

CS를 공부해봐요!

정보처리기사 2과목 정리 _ 소프트웨어 개발

Snow Rabbit 2026. 6. 7. 04:34

2과목 정리


1. 자료구조

 

1)  선형 구조

 

1  순차 리스트

2  연결 리스트

 

3  스택

 

LIFO 마지막이 제일 먼저 나온다.

삭제할 게 없는데 삭제하려면 언더플로우

꽉 찼는데 더 넣으려고 하면 오버플로우

 

스택을 이용한 연산

재귀호출, 후위표현의 연산, 깊이 우선 탐색 ( DFS )

 

4  큐

FIFO 먼저 들어간게 제일 먼저 나온다.

첫 번째 원소 front 마지막 원소 rear

 

큐를 이용한 연산

프린터 작업 관리, 프로세스 스케줄링, 데이터 스크림 처리, 실시간 시스템, 통신 시스템

수식 계산, 넓이 우선 탐색 ( BFS )

=> 여러 사람들이 하나의 시스템을 사용할 때

 

5  데크

 

 

 

2)  비선형 구조

 

1  트리

노드 : 트리의 원소 ( 원 하나하나 )

간선 ( 엣지 )  : 노드를 연결하는 선

루트 노드 : 트리의 시작 노드 ( A )

형제 노드 : 같은 부모 노드의 자식 노드 ( B와 C )

조상 노드 : 간선을 따라 루트 노드까지 이르는 경로에 있는 모든 노드

( J의 조상노드 F C A ) ( 윗사람 )

자손 노드: 하위 레벨의 노드들

( C의 자손 노드 F G I ) ( 아랫사람 )

서브트리 : 부모 노드와 연결된 간선을 끊었을때 생성되는 트리

단말 노드: 차수가 0인 노드, 자식이 없는 노드

 

차수

- 노드의 차수 : 노드에 연결된 자식의 수

- 트리의 차수 : 트리에 있는 노드의 차수 중에서 가장 자식이 많은 수

 

높이

- 노드의 높이 : 루트에서 노드까지 간선의 수

- 트리의 높이 : 트리에 있는 노드의 높이 중 가장 많은 간선의 수

 

* 트리의 순회 * 

ROOT를 어디서 부터 시작할 건지에 따라 이름이 정해짐

 

- 전위 ( Pre ) 순회

A

B    C

 

A > B > C

중앙 > 왼쪽 > 오른쪽

 

- 중위 ( In )순회

A

B    C

 

B > A > C

왼쪽 > 중앙 > 오른쪽

 

 

- 후위 ( Post ) 순회

A

B    C

 

B > C > A

왼쪽 > 오른쪽 > 중앙

 

서브트리로 묶어서 생각하기

 

2  그래프

 

 

 

2. 정렬

 

1)  버블 정렬

두 개씩 비교해서 둘의 위치를 바꾼다. 중요한것은 두개씩 전체를 다 비교해야 1회전!

 

5 1 7 10 2

1회전 : 1 5 7 2 10

1회전을 하게 되면 가장 큰애가 맨 뒤로 가게 된다.

2회전 : 1 5 2 7 10

회전 한번 더했으니 10 고정에 7이 맨 뒤로 가게 된다.

3회전 : 1 2 5 7 10

4회전 : 1 2 5 7 10

1은 더 이상 비교할 사람이 없으니 끝

 

2)  삽입 정렬

오른쪽에 있는 친구들을 왼쪽으로 당겨 오고 왼쪽에선 대소비교 후 정렬

 

5 | 1 7 10 2

1회전 : 1 5 | 7 10 2

7을 왼쪽으로 가져오고 왼쪽 끝에 5랑 비교해서 7을 둔다.

2회전 : 1 5 7 | 10 2

3회전 : 1 5 7 10 | 2

2랑 10 비교 아 2가 더 작네 그럼 7이랑 비교

어 더 작네 5랑 비교 어 더 작네 1이랑 비교 걔보단 크네

하고 1 옆으로 간다.

4회전 : 1 2 5 7 10 |

 

 

3)  선택 정렬

맨 오른쪽부터 누가 올지 정하고 전체 훑어서 찾아서 바꾸넣어주기

 

5 1 7 10 2

1회전 : 1 5 7 10 2

그다음 작은 숫자 찾는다. 중요한 것은 그 둘의 자리를 바꾼다.

2회전 : 1 2 7 10 5

3회전 : 1 2 5 10 7

4회전 : 1 2 5 7 10

회전에 맞는 칸의 친구를 찾아서 바꿔 넣어주기

 

 

 

3. 빅 오 표기법

아무리 오래 걸려도 이 시간 안에는 끝날 것이라는 것

1)  표기법

가장 큰 영향력을 주는 n의 대한 항만 표시

계수는 생략

O( 5n + 8 ) => O( 5n ) => O( n )

O( 5n^2 + 5n + 5 ) => O( n^2 )

O( 5 ) = > O( 1 )

n이 없으면 입력의 크기가 커져도 실행시간은 변하지 않는다.

 

 

2)  정렬 알고리즘의 빅 오 시간 복잡도

버블, 삽입, 선택 = O( n^2 )

합병, 퀵, 힙 = O( n logn )

기수 = O( n * 각 항목의 최대 자릿수 )

쉘 = O( n^1.5 )

 

 

 

 

4. 단위 모듈 테스트 방법

 

1)  Black Box

사용자 관점

사용자 요구사항 명세를 보면서 테스트

- 구현된 기능을 테스트

- 해당 기능의 작동여부 테스트

 

동등 분할 검사 / 경곗값 분석 / 오류 예측

테스트하기가 쉽다!

 

2)  White Box

개발자 관점

 프로그램의 내부로직을 보면서 테스트

( 내부로직 : 수행경로 구조, 루프 등 )

- 소스코드의 논리적인 경로를 테스트

 

기초 경로 검사 / 제어 구조 검사

오류를 발견하기 쉽다!

 

 

 

5. 테스트 드라이버

테스트 대상이 되는 모듈의 상위 가상 모듈 ( 상향식 )

위에를 만들어주면 드라이버

 

 

 

6. 테스트 스텁

테스트 대상이 되는 모듈의 하위 가상 모듈 ( 하향식 )

아래를 만들어주면 스텁

 

 

드라이버와 스텁으로 막히는 테스트를 일단 임시방편으로 만들어서 해보라는 뜻!

 

 

 

7. 디지털 저작권 관리 ( DRM ) 구성 요소

 

1)  콘텐츠 제공자

콘텐츠를 제공하는 저작권자

ex ) 영화 스튜디오, 뉴스 미디어 회사 등...

 

 

2)  콘텐츠 분배자

쇼핑몰 등으로써 암호화된 콘텐츠 제공

ex ) 스트리밍 서비스 ( 넷플, 티빙 ), 케이블 or 인터넷 제공업체

 

 

3)  콘텐츠 소비자

ex ) 시청자, 청취자, 독자

 

 

4)  클리어링 하우스

키 관리 및 라이선스 발급 관리

ex ) 디지털 저작권 관리 ( DRM ) 시스템, 결제 처리 회사 ( Visa, PayPal )

 

 

4)  패키저

콘텐츠를 메타 데이터와 함께 배포 가능한 단위로 묶는 기능

 

 

5)  보안 컨테이너

원본을 안전하게 유통하기 위한 전자적 보안장치

 

 

6)  DRM 컨트롤러

배포된 콘텐츠의 이용 권한 통제

 

 

 

8. 디지털 저작권 관리 ( DRM ) 기술 요소

 

1)  암호화

콘텐츠 및 라이선스를 암호화, 전자서명 할 수 있는 기술

 

 

2)  키 관리

콘텐츠를 암호화 한 키에 저장, 배포, 회수, 파기 기술

 

 

3)  암호화 파일 생성

콘텐츠를 암호화된 콘텐츠로 생성하기 위한 기술

 

 

4)  식별 기술

객체의 위치와 상관없이 해당 객체를 고유하게 식별하는 "DOI"

웹주소와 같은 리소스를 가리키기 위해 사용하는 "URI"

 

 

5)  저작권 표현

라이선스의 내용 표현 기술

디지털 권리 및 라이선싱 정보를 표현하고 배포

 

6)  정책 관리

라이선스 발급 및 사용에 대한 정책 표현 및 관리 기술

 

7)  크랙 방지

크랙에 의한 콘텐츠 사용 방지 기술

악의적인 공격자로부터 시스템, 애플리케이션 보호 목적

 

8)  인증

라이선스 발급 및 사용의 기준이 되는 사용자 인증 기술

 

 

 

9. 나쁜 코드

 

1)  스파게티 코드

- 복잡한 제어구조, 긴 함수

- 코드 흐름이 복잡하여 이해하기 어려움

- 수정과 확장이 어려움

- 팀원 간 협업이 어려움

- 비일관적인 코드 흐름, 의존성 문제

=> 엉켜있어서 보기 어려움

 

 

2)  외계인코드

- 불명확한 변수명 및 함수명, 매직 넘버 사용

- 의미 불명확, 주석 부족으로 이해 어려움

- 의도파악이 어려워 유지보수 어려움

- 팀원 간 협업이 어려움

- 코드 이해 어려움, 생산성 저하

=> 그냥 모르겠는 거, 출처가 어디인지 모르는 거, 이상한 거

 

 

 

10. 시스템 연결 = EAI

 

1)  Point to Point

중간에 미들웨어를 두지 않고

각 애플리케이션 간 포인트 투 포인트로 연결

 

 

2)  Hub & Spoke

단일 접점이 허브 시스템을 통해 데이터를 전송하는 중앙 집중적 방식

 

 

3)  Message Bus

애플리케이션 사이 미들웨어( 버스 )를 두고 처리

미들웨어를 통한 통합

 

 

2)  Hybrid

그룹 내에는 Hub / 그룹 간은 Bus 방식

두 가지를 섞는다는 뜻