1. 단순 연결 리스트의 정의 및 특징 정의: 하나의 링크 필드를 가진 노드들이, 모두 자기 후속 노드와 연결되어 있는 노드 열(list) 특징: 마지막 노드의 링크 필드는 리스트의 끝을 표시하는 null 값을 가짐 별칭: 선형 연결 리스트(linear linked list), 단순 연결 선형 리스트(singly linked linear list), 연결 리스트(linked list), 체인(chain) 2. 삽입과 삭제 연산 개념 1) 원소 삽입 연산 (1) Node 삽입 연산이란? list에는 포인터 변수, ptr이 가리키는 list로서, 기존에 10과 20이 있음. list의 추적을 위한 포인터 변수, node_tracer를 선언하고 이를 ptr과 같은 노드를 지칭하게 함 50을 가진 새로운 노드를..
1. 노드와 포인터 1) 배열의 순서 리스트 표현 리뷰 - Orderd list(순서 리스트)에 있어서 임의의 위치에 대한 삽입, 삭제 비용이 크다. [bat, cat, nature, orphan, test] -> 이들은 물리적 메모리 공간에 연속적으로 write되는 특성을 가진다! "Fast but inconvenient!!" - 순서 리스트 L의 순차 표현과 원소 삽입 - 순서 리스트 L의 원소 삭제 - 배열로 순서 리스트를 표현할 때 장점 1️⃣ 표현이 간단함 2️⃣ 빠른 임의 접근(Immediate Random Access): 인덱스는 직접 메모리 주소로 변환할 수 있기 때문에 원소 접근이 빨라짐 - 배열로 순서 리스트를 표현할 때 단점 1️⃣ ! 순차적으로만 ! 표현할 수 있음 2️⃣ 어떤 작업..
모듈1. 희소 행렬 ADT 1) Sparse Matrix란? - 일반적으로 matrix는 m개의 행(row)과 n개의 열(column)로 구성되며, m * n(m by n으로 읽음)으로 표시된다. - 36개 element 중 8개의 element만이 non-zero임 → Sparse Matrix(희소 행렬): 0이 아닌 element가 희소한 행렬 2) Sparse Matrix의 표현 2차원의 경우는 (row, col, Non-0 value)로 표현됨 3차원의 경우는 (row, col, depth, Non-0 value)로 표현됨 3) Sparse Matrix ADT(2차원) 모듈2. 희소 행렬 연산의 C 구현 참고하면 좋을 블로그 https://m.blog.naver.com/nabilera1/22204..
모듈1. C에서의 데이터 타입 1) 선언과 정의 선언(declaration)과 정의(definition)를 구분하는 기준은 "memory address binding의 유뮤" 어떤 대상의 이름에 대해 그에 대응하는 메모리 상의 주소가 정해진다면 그것은 정의 그렇지 않고 이름만 알려준다면 그것은 선언 int x;//선언함과 동시에 변수를 정의함 int x = 5;//선언함과 동시에 변수를 정의하고, 값을 할당함 int x(){ return 0; }// 선언과 동시에 정의, 호출 시 jump해야 하기 때문 struct x { int i; } // 선언과 동시에 정의 // 구조체가 구조체 변수로 인스턴스화 할 때 어떻게 메모리가 배치될 지를 알려주는 문장 extern int x;// 선언, 다른 모듈에서 정의..
모듈1. 배열 개요 1) 데이터의 표현 (1) 고급 표현 특징 추상적이고 논리적인 표현 추후 저급의 데이터와 연산자로 구현해야 실행될 수 있음 연산자의 구현은 데이터의 저급 표현 방법에 의존 (2) 저급 표현 방법 순차 표현(sequential representation) = 배열(array) 연결 표현(linked representation) = 연결 리스트(linked list) 2) 배열이란? 모듈2. 배열 추상 데이터 타입 1) 배열과 인덱스 (1) 배열의 정의: 주어진 각 index에 대해 하나의 value가 연관된 쌍들의 집합을 "배열(array)"이라고 한다. (포인터에는 주소만!) (2) 인덱스(index) = 메모리 안 주소 순서를 나타내는 원소의 유한 집합 집합 내에서의 상대적 위치 식..
0. 프로그램의 성능 평가 1) 프로그램의 일반적인 평가 항목들 프로그램이 처음에 정한 문제의 sepcifications을 만족하는가? 프로그램의 documentation이 충분한가? 프로그램이 readable한가? 프로그램이 correct하게 옳은 답을 내는가? 문제의 논리적 단위를 생성할 때, 함수를 효율적으로 사용했는가? 프로그램의 수행 시간이 늦지 않은가? 프로그램이 storage(memory, disk)를 효과적으로 사용하는가? 2) 프로그램의 성능을 측정하는 방법들 (1) Time & Space 측정법(15% 정도) : Program 성능을 측정하기 위해, Machine(HW)과 독립적인 다음 2가지 SW적 요소를 분석하는 방법 Time 요소(효율성, efficiency, 속도 지향) Spac..
1. 순환(recursion) 1) 정의: 자신을 정의할 때 자기 자신을 재참조하는 방법 2) 사용 형태: 프로그래밍에 적용한 "함수의 재귀 호출(Recursive call)"의 형태로 많이 사용 3) 재귀 호출(Recursive call)의 종류 (1) 직접 순환(direct call) : 함수가 직접 자신(이름)을 호출 eg) A(A()) (2) 간접 순환(indirect call) : 다른 제 3의 함수를 호출하고, 그 함수가 다시 자신(이름)을 호출 eg) A(B(A())) 4) 순환 방식의 적용 (1) 분할 정복(Divide and Conquer)의 특성을 가진 문제에 적합 어떤 복잡한 문제를 간단하게 풀 수 있는 직접적인 작은 문제로 분할하여 해결하려는 방법 분할된 문제가 원래의 큰 문제와 그..
모듈1. SW 생명 주기(SW Life Cycle) 1) SW의 중요 조건: 효율성과 정확성 * D&C 기법: Devide and Conquer(작은 것으로 나눠 작은 것부터 때려잡기) * 25~50줄이 1 unit이 됨 -> 이 unit들을 call 하며 사용 2) SW 생명 주기(software life cycle) (1) 요구 분석(Requirement Analysis): 회사의 입장에서는 고객의 요구사항이다. ⭐ User의 요구 사항을 바탕으로, 문제에 대해 해답이 될 수 있는 요건들을 정의함 최선의 해결 방법을 위해 이해가 충돌되는 상호간의 문제점을 모두 이해하는 데 도움이 되는 과정임 목표 SW의 필수 및 선택 요건을 구분함 요구 명세서(Requirement Specification)를 작성함..
- Total
- Today
- Yesterday
- SWLIfeCycle
- 브라우저
- 구글크롬
- 비주얼스튜디오
- 소스파일
- 기계어
- javase
- 개발계발
- 알고리즘
- 프론트엔드
- D&C
- 웹개발자
- Abstraction
- VisualStudio
- 사이트만들기
- 앱개발
- 크롬
- 데이터구조
- 브라우저뜻
- 데이터추상화
- 바이트코드
- ADL
- vscode
- jre
- 구현
- 의사코드
- 익스플로러
- 프로그래밍언어
- SW생명주기
- jvm
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | |
7 | 8 | 9 | 10 | 11 | 12 | 13 |
14 | 15 | 16 | 17 | 18 | 19 | 20 |
21 | 22 | 23 | 24 | 25 | 26 | 27 |
28 | 29 | 30 |