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)를 작성함..
1. 개요 1) 데이터 vs 구조 - 데이터(Data) - 구조(Structure, Organization) - 재료 = 데이터, 요리법 = 알고리즘, 음식 = 프로그램 데이터 + 알고리즘 = 프로그램 따라서 데이터(자료) 구조란, 흩어져 있는 다양한 형태의 "데이터(자료)"들을 모으거나 연결하여 구조를 형성하는 체계적인 방법론이다. "Systematic Organization of Data" 데이터 구조(Data Structure) 과목은 우리가 배울 기초 방법론을 가지고 최종 다양한 목적(목표, Target)을 위해 설계하고 만드는 방법을 배우는 과목이다. 다음과 같은 내용을 배우게 된다. (1) 다양한 형태의 "데이터"들을 저장하거나 연결하기 위한 기초적인 구조 설정 방법을 배우고, (2) 그 구조..
- Total
- Today
- Yesterday
- 구현
- 알고리즘
- 개발계발
- 브라우저
- SW생명주기
- 데이터추상화
- 앱개발
- 프론트엔드
- Abstraction
- 소스파일
- 의사코드
- 프로그래밍언어
- 데이터구조
- 브라우저뜻
- ADL
- jvm
- 구글크롬
- 바이트코드
- jre
- VisualStudio
- 비주얼스튜디오
- SWLIfeCycle
- 기계어
- 웹개발자
- javase
- 사이트만들기
- 익스플로러
- 크롬
- vscode
- D&C
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |