- 자료 구조
- 선형구조 : 한줄로 세울 수 있는것
- 배열
- 같은 크기로 나열된 집합(연속적으로 배치)
- 정적자료 / 기억장소에 추가 어려움 / 메모리 낭비 심함
- 인덱스로 접근 가능함
- 선형리스트
- 연결리스트
- 포인트
- 연속적이지 않음 / 접근 속도 느림 / 중간 노그 끊어지면 찾기 힘듬
- 메모리상에 연속적으로 배치되지 않음
- 연결리스트
- 큐
- 한방향은 출구, 한방향은 입구
- FIFO(First In First Out)
- Front(Hearder) 삭제 / Tail(Rear) 삽입
- 포인터가 2개인 것은 큐
- 사용하는 시스템
- 프린트 : 먼저, 인쇄 누른 순서대로 처리함
- 프로그램, 시스템 스케줄링
- 스텍 - 물컵 연상
- 한쪽(입구/출구) 존재
- LIFO(List In First Out) : 마지막에 들어온 것이 처음에 나온다.
- 더이상 OverFlow - 추가시 / UnderFlow - 삭제시 없을때...
- 순차적인 작업 : 함수 호출/ 수식 계산 /컴파일
- 추가 순서
- Top = Top + 1 해주고, save
- 삭제 순서
- remove 해주고, Top = Top - 1
- 스텍을 이용한 연산
- 재귀호출, 후위표현, 깊이우선탐색
- 깊이 우선 탐색
- 노드와 실선으로 갈떄까지 간 것
- 깊이 우선 탐색
- 재귀호출, 후위표현, 깊이우선탐색
- 데크
- 삽입, 삭제 양쪽 끝 모두 발생할 수 있는 상태
- 배열
- 비선형구조
- 트리
- 트리의 용어
- 루트(부모)
- 노드
- 차수
- 노드의 차수
- 각각의 노드의 차수
- 트리의 차수
- 전체 노드 중에 가장 자식이 많은 차수
- 단말 노드
- 자식이 없는 노드
- 노드의 차수
- 운행법 또는 순회라고 한다.
- 설명 : 다 방문하다는 뜻
- 전위(Pre) ,중위(In), 후위(Post)
- 설명 : 다 방문하다는 뜻
- 수식표기법
- 전위(Pre) ,중위(In), 후위(Post)
- 트리의 용어
- 그래프
- 노드(점선) = n
- 방향
- n(n-1)
- 무방향
- n(n-1)/2
- 트리
- 정렬
- 선택 정렬 : 가장 작은 수를 찾음 -> 앞으로 나보다 큰놈이랑 바꾼다. 그게 1회전
- 재귀호출, 후위 표현, 깊이 우선 검색
- 버블 정렬 : 왼쪽부터 인접한 2개의 숫자를 비교함 | 1회전시 가장 큰 수가 오른쪽에 위치함
- 시간 복잡도O(n)
- 삽입 정렬 : 왼쪽에서 두번째 숫자부터 비교 왼쪽부터 / 8 9 7 이면, 7하고 8하고 자리 바꾼다. 하지만, 8이 뒤로 가는 것이 아니라 9가 뒤로 밀고 그 자리에 8이 들어감
- 예 : 8 | 9 | 7 인데, 7은 9하고 비교하고 9보다 7이 작으니, 9 앞으로 가고 그 다음 7은 8하고 비교하고 7은 8보다 작으니, 8 앞으로 삽입함
- 시간 복잡도는 운이 좋다면, 짧게 O(n) 그렇지 않다면, 시간 복잡도O(n)2까지 간다.
- 퀵 정렬
- 레코드의 많은 자료 이동을 없애고 하나의 파일을 부분적으로 나누어 가면서 정렬한다.
- 선택 정렬 : 가장 작은 수를 찾음 -> 앞으로 나보다 큰놈이랑 바꾼다. 그게 1회전
- 검색
- 이분(이진)검색
- 순서가 정해져 있어야 함
- 가운데 중심으로 서브 파일 2개로 나누어 검색함으로써 검색횟수가 줄어
- Key 값과 비교하여 검색함
- 해싱
- 제산법 또는 제산방법 - 양의 정수인 소수 나누어
- 제산 함수라고도 한다.
- 나누어 나온 나머지를 통해서 값을 찾는다.
- 중간 제곱 방법 또는 제곱법 - 중간 부분의 값
- 중첩 방법 또는 폴딩법 : 배타적 논리합(XOR : Exclusive OR)
- 기수 변환 방법 : 레코드 키값
- 숫자 분석 함수
- 제산법 또는 제산방법 - 양의 정수인 소수 나누어
- 이분(이진)검색
- 알고리즘 설계 방법
- 분할 정복(Divide and Conquer)
- 작은 단위로 분리 문제 분할
- 동적 프로그래밍(Dynamic)
- 분할 정복과 나누는 부분은 같지만, 저장하여 사용함
- 탐욕 알고리즘(Greedy)
- 눈 앞에서 가장 적합한 것을 선택함(최적의 선택지를 선정함)
- 백트래킹
- 현재 해결책이 적합하지 않다면, 되돌아가는 것
- 분할 정복(Divide and Conquer)
- 선형구조 : 한줄로 세울 수 있는것
* 위에서 중요한 포인트
- *나 /는 +와- 보다 우선순위이다 .하지만, 간혹 연산자 + 피연산자 + 피연산자 나 피연산자 + 피연산자 + 연산자로해서 +나 -가 먼저 될 경구가 존재한다. 그러면, ()를 주어 *와/ 보다 먼저라는 것을 표시하면 된다.
- A*(B+C) -> A*(BC+) -> A(BC+)*
'정보처리기사 > 필기' 카테고리의 다른 글
2과목 - 소프트웨어 테스트 (0) | 2025.01.27 |
---|---|
2과목 / 3과목 - 데이터베이스, 정규화 (0) | 2025.01.27 |
1과목 - 인터페이스 설계 (0) | 2025.01.25 |
1과목 - 객체지향 설계와 디자인 패턴 (0) | 2025.01.25 |
1과목 - 애플리케이션 설계 (0) | 2025.01.24 |