CS지식 89

TIL 정리_48(Hash Table, ArrayList)

https://www.youtube.com/channel/UCWMAh9cSkEn8v42YRO90BHA 유튜브 - 엔지니어 대한민국의 자료구조 강의를 듣고 정리한 내용입니다 해시테이블(hash table) 검색하고자하는 key값을 입력받아 해시 함수로 반환받은 해시 코드를 배열의 인덱스로 환산하여 데이터에 접근하는 방식의 자료구조이다 key -> HashCode -> Index -> Value 해시함수 : 특정한 규칙을 읽어 입력받은 key값을 값에 관계없이 동일한 코드를 반환한다 Hash Table 검색속도가 매우 빠르다 -> 배열 공간을 고정된 크기만큼 마련해놓고 해시코드를 배열의 index로 사용하기 때문이다 배열의 방을 나눌 때 규칙을 잘 만드는게 중요하다 -> Hash Algorithm을 의미 c..

TIL 정리_47(Linked List)

retrieve : 헤더 다음 데이터를 n에 할당해서 n부터 출력하도록 하는 것 Test class public class LinkedListNode { public static void main (String[] args) { LinkedList ll = new LinkedList(); ll.append(1); ll.append(2); ll.append(3); ll.append(4); ll.retrieve(); ll.delete(1); ll.retrieve } //첫 번째 헤더도 삭제가능 LinkedList 중복값 삭제 예제 정렬되어있지 않은 링크드리스트에 중복되는 값을 제거 -> 별도의 버퍼를 사용하지 않고 제거 3 -> 2 -> 1 -> 2 -> 4 버퍼를 사용하는 경우 : Hashset 중복 x ..

TIL 정리_46(Linked List)

유튜브 엔지니어 대한민국 강의를 듣고 정리한 내용입니다 https://www.youtube.com/channel/UCWMAh9cSkEn8v42YRO90BHA Linked List 개념 컴퓨터에 자료를 저장하는 구조의 한 종류 일렬로 연결된 데이터를 저장할 때 사용한다 데이터 추가 및 삭제에 용이 데이터 조회는 ArrayList가 사용하기 좋다 배열과의 비교 : 배열은 방들이 물리적으로 한 곳에 모여있어 늘이거나 줄일 수 없다 링크드 리스트는 중간에 추가하고 싶은 경우 해당 노드의 주소를 변경하여 추가가 가능하다 삭제도 동일한 방식으로 가능하다 노드(포인터)를 삭제할 경우 노드가 링크드 리스트에서 삭제되었지만 메모리가 남아있다 -> 자바는 가비지 컬렉터가 알아서 삭제하지만 C나 C++는 삭제코드를 써야 한..

TIL 정리_45(ORM이란?)

ORM을 알기 전 알아둘 정보 영속성(Persistence) 데이터를 생성한 프로그램이 종료되더라도 사라지지 않는 데이터의 특성 영속성을 갖지않는 데이터는 메모리에서만 존재하기 때문에 프로그램을 종료하면 모두 잃어버리게 된다 Object Persistance : 영구적인 객체 메모리 상의 데이터를 파일 시스템, 관계형 데이터베이스 혹은 객체 데이터베이스 등을 활용하여 영구적으로 저장 -> 영속성 부여 데이터를 데이터베이스에 저장하는 3가지 방법 - JDBC - Spring JDBC (jdbc templete) - Persistence Framework(Hibernate, Mybatis 등) Persistence Framework JDBC 프로그래밍의 복잡함이나 번거로움 없이 간단한 작업만으로 데이터베이스..

CS지식/기타 2022.04.01

TIL 정리_42

데이터 구조는 우리가 컴퓨터 메모리를 더 효율적으로 관리하기 위해 새로 정의하는 구조체이다 자료구조 : 컴퓨터에 정보를 각기 다른 방법으로 저장할 수 있도록 도와준다 두 개의 값을 가진 구조체도 자료구조이다 배열 : 쉽게 인덱싱할 수 있다 (빠르다) 링크드 리스트(연결 리스트) -메모리 덩어리 여러 개를 포함한 데이터 구조 -각 인덱스의 메모리 주소에서 자신의 값과 함께 바로 다음 값의 주소(포인터)를 저장한다 node 구조체 typedef가 하는 일 : node 구조체에서 node로의 별칭을 제공 중간에 코드를 추가한 경우 업데이트 한 코드를 기존에 존재하는 코드와 연결하고 앞에 위치하는 코드를 업데이트 코드를 가리키게 한다 컴퓨터는 하나의 연결리스트를 볼 수 있다 배열과 비교하여 연결리스트는 새로운 ..

CS지식 2022.03.29

TIL 정리_41

입력값으로 “emma”를 주게 된다면, 단순한 예상과는 다르게 s와 t 모두 “Emma”라고 출력된다 ->s라는 변수에는 “emma”라는 문자열이 아닌 그 문자열이 있는 메모리의 주소가 저장되기 때문 두 문자열을 실제로 메모리상에서 복사하려면 메모리 할당 함수를 사용해야한다 malloc : 정해진 크기만큼 메모리를 할당하는 함수이다 t[0] = toupper(t[0]); char *t = malloc(strlen(s) +1); strcpy(s, t); //copy 메모리 할당 및 해제 malloc 함수를 이용하여 메모리를 할당한 후에는 free라는 함수를 이용하여 메모리를 해제해야한다 free(t); 변수의 값을 초기화 하지 않으면 쓰레기 값으로 남게되어 메모리 용량의 낭비가 발생한다 -> 메모리 누수라..

CS지식 2022.03.28

TIL 정리_40

배열 char ‘ ’ String “ ” 여러개의 값을가진 하나의 변수를 만들고 싶을 때 배열을 마든다 int score[3] //정수 3개를 위한 메모리 요청 c언어에서의 상수 선언 const int N = 3; 변수의 이름은 시작점에 대한 정보를 알려준다 문자열이 언제 끝나는지를 알려주는 문자 : null -> \0로 표현 문자열은 컴퓨터가 가진 메모리 용량만큼의 길이 제한이 있다 get_String을 제외하고는 더 큰 값을 입력하면 오류가 발생한다 for(int I =0, n = strlen(s); I = ‘a’ && s[i] 왼쪽에서 오른쪽까지 순차적으로 검색 숫자가 정렬되지 않은 상태에서 하나하나 확인한다 이진 탐색 알고리즘 -> 정렬되어 있는 상태에서 반을 나눠..

CS지식 2022.03.27

TIL 정리_39

https://www.boostcourse.org/cs112 모두를 위한 컴퓨터 과학 (CS50 2019) 부스트코스 무료 강의 www.boostcourse.org 부스트코스 모두를 위한 컴퓨터과학을 듣고 개인적으로 정리한 내용 알고리즘 알고리즘을 이용하면 일일이 찾을 것을 나누고 나눠서 간단하게 찾을 수 있다 input > algorithms > output 알고리즘이란 입력값을 출력값의 형태로 바꾸기 위해 어떤 명령들이 수행되어야 하는지에 대한 규칙들의 순서적 나열이다. C언어 #include (studio.h) int main(void) { printf(“hello world\n”); } ->C로 작성한 코드는 “파일이름.c”로 저장해야 한다. //확장자 “.c”는 C로 작성된 코드라는 의미 sou..

CS지식 2022.03.26

자료구조 기초 정리

유튜브 강의를 듣고 개인적으로 정리한 내용입니다 자료구조란? -컴퓨터 프로그래밍에 있어, 가장 기초적인 학문분야이다 -컴퓨터 프로그램의 기본골격으로 프로그램이 효율적이고 안전하게 동작하기 위해서 반드시 필요하다. >>프로그램의 크기가 작거나 대형 프로젝트의 초기단계에서 이를 간과할 경우 구조적인 결함이 발생한다 프로그램의 수행시간 혹은 저장공간을 고려한 효율적인 자료구조의 설계 ->프로그램이 어떻게 사용되는지에 따라 목적 및 기능에 부합하는 자료구조를 설계한다. 설계의 예시) 윈도우 탐색기의 경우 폴더구조 = 트리 / 파일목록 = 리스트 자료구조의 분류 단순구조 : 프로그래밍 언어에서 제공하는 기본적인 데이터 타입으로 정수(int) 실수(float) 문자와 문자열(char)이 있다. 선형구조 : 자료들 ..