728x90

전체 글 209

B-Tree 구현법(그림)

B-Tree 구현법(그림)정렬된 수에 따라 자녀들이 정렬된다.root: 최상단의 부모값, leaf: 최하단 자녀값M: 각 노드의 최대 자녀수 → 기준 (자녀수M에 따라 M차 B-Tree라 불리운다.)M-1: 각 노드의 최대 key 수M/2(올림): 각 노드의 최소 자녀수 (root, leaf에서 제외)M/2(올림)-1: 각 노드의 최소 key 수(root에서 제외)삽입 방법추가는 leaf에서 한다.(끝노드)노드가 넘치면 가운데 key를 기준으로 좌우 key는 분할!하고 가운데 key는 승진한다.삭제 방법M/2(올림): 각 노드의 최소 자녀수 (root, leaf에서 제외)M/2(올림)-1: 각 노드의 최소 key 수(root에서 제외) → 기준으로 정렬ex) 3차 트리에서 2-1=1로 최소 key 수는 ..

B-Tree(C언어 구현 포함)

B-Tree(C언어 구현 포함)[참고 사이트]https://velog.io/@emplam27/%EC%9E%90%EB%A3%8C%EA%B5%AC%EC%A1%B0-%EA%B7%B8%EB%A6%BC%EC%9C%BC%EB%A1%9C-%EC%95%8C%EC%95%84%EB%B3%B4%EB%8A%94-B-Treehttps://yeongjaekong.tistory.com/38최대 3개의 키와 4개의 자식을 가질수 있는 차수가 3인 B-TreeB-Tree란?B-Tree는 이진트리에서 발전되어 모든 리프노드들이 같은 레벨을 가질 수 있도록 자동으로 균형을 맞추는 트리입니다. 정렬된 순서를 보장하고 멀티레벨 인덱싱을 통한 빠른 검색을 할 수 있기 때문에 DB에서 사용하는 자료구조 중 한 종류라고 합니다. B-Tree뿐아..

GCC에 대해서

GCC에 대해서[참고 사이트] https://80000coding.oopy.io/d5fa7c87-192f-4c68-95eb-aa4af5b9dbf5GCC 관련 개념GCC(GNU Compiler Collection): GNU 컴파일러 모음GNU: GNU’s not Unix의 재귀 약자. 리처드 스톨먼이 각종 자유 SW들이 돌아가고 번영할 수 있는 기반 생태계를 구축하기 위해 시작한 프로젝트.컴파일러: 번역기 같은 역할을 한다. 어떤 언어의 코드를 다른 언어로 바꿔주는 과정.소스파일 실행파일 되는 모든 과정과정: 전처리→ 컴파일 → 어셈블 → 링크단계파일명: hello.c → hello.i → hello.s → hello.o1. 전처리(hello.c → hello.i)전처리기가 소스 파일 내의 전처리기 지시자..

WEEK 05 C언어 링크드 리스트 1번 문제(4월13일 일요일)

C언어 링크드 리스트 1번 문제[문제내용]insertSortedLL사용자로부터 정수를 입력받아 오름차순 정렬된 연결 리스트에 삽입하는 C 함수 작성.※ 이미 존재하는 값은 삽입하지 않음※ 삽입 성공 시 인덱스를 반환, 실패 시 -1 반환함수 원형:int insertSortedLL(LinkedList *ll, int item);예시:기존 리스트: 2, 3, 5, 7, 9 → 입력: 8 → 결과 리스트: 2, 3, 5, 7, 8, 9 → 반환값: 4기존 리스트: 5, 7, 9, 11, 15 → 입력: 7 (중복됨) → 삽입되지 않음, 반환값: -1[풀이 방법]이 문제를 풀기 위해서는 3가지 조건을 고려해야한다.리스트 자체가 없으면(NULL)이면 -1리턴리스트가 NULL로 비었으면 노드 추가리스트에 이..

WEEK 05 알럼나이 토킹(4월 12일 토요일)

알럼나이(수료자) 패널분들과 이야기 시간공통 질문정글을 나아가면서 할 말인생의 절반은 기세다. 좌절할 수 있는데, 기세 잃지 말고 텐션 유지하면서 나아가면 될것 같다. 내 컨디션을 항상 일정하게 유지할 수 있도록 노력하자. 핀트 OS하고 나면 나만무 때문에 팀빌딩 불안감 있는데, 팀빌딩 주차 전까지 본인 페이스 맞춰서 이번 주차에 집중해야된다. 흔들리지 않고 나아가는 것이 중요하다.정글의 가치관에 대해서...스스로 찾아가는 힘을 길렀다. 강의 찾고, 자료를 찾고 GPT랑 싸우고 나아가던(고군분투) 했던 경험이 현업에 있어서 중요한 경험이 되었다. 너무 완벽하게 하려하지 말것. 너무 다루는게 많고, 어려운 것들 많다. 다른 사람들도 어려운것 맞다. 템포를 읽지 않는 것이 중요하다. 이번주차 다 못하더라도 ..

WEEK 05 리눅스, C언어 TIL(4월12일 토요일)

오늘 아침의 코어타임에는 내가 포인터와 구조체에 대한 개념을 팀원분들에게 설명했다.다른 팀원분들의 설명을 듣고 내가 조사한 학습에 보충이 필요해서 노션에 적어두었다.1번 문제도 잘 안풀리는데, 개념도 제대로 안되어 있어서 그런지 머리가 아프다. 이랫다 저랫다하는 느낌이다.코어타임 보충 내용포인터에서의 scanf를 확인해보자.C프로그램(구조)#include 지시자(입출력 라이브러리 호출)int main(void){main함수는 필수 적으로 들어가야함.void는 입력값 요구 없을 시 사용.printf는 문자열 리터럴 출력.;세미콜론은 컴퓨터가 코드가 어디서 종료되는 지 판단하는 기준출력시 자료형%d → int%f → float%s → string문자열과 문자는 다르기 때문에 차이를 조사해보자.매크로정의..

C언어의 구조체

C언어의 구조체구조체는 여러 개의 변수를 하나로 묶을 수 있는 사용자 정의 자료형이다. 쉽게 말해 JAVA에서의 class의 역할과 비슷하다.(좀 라이트한) 밑에 예시를 보며 이해해보자.struct Person { char name[20]; int age; float height;};위의 코드는 하나의 사람을 나타내기 위해 필요한 정보인 이름, 나이, 키 등을 Person이라는 구조체에 묶습니다.이렇게 구조체는 관련 있는 데이터를 논리적으로 묶어서 관리할 수 있게 도와줍니다.사용법구조체는 선언과 변수 생성으로 사용할 수 있습니다. 계속해서 선언하고 변수를 생성해야되는 작업을 줄임으로써 코드를 작성하는데, 효율적으로 작성 가능합니다.struct Person { char name[20]..

C언어의 포인터

C언어 포인터포인터는 메모리의 주소값을 저장하는 변수입니다.포인터를 왜 써야할까?함수에서의 값 전달(call by reference)동적 메모리 할당(malloc, free)배열과 문자열 처리구조체와 연결 리스트 구현포인터의 종류포인터에서는 크게 두가지의 연산자가 있습니다.참조 연산자인 * (주소에 저장된 값을 반환)주소 연산자인 & (주소값을 반환)예시를 들어 설명해보겠습니다.int x = 10; # x변수를 10으로 선언int* p = &x; # 포인터로 x주소 선언위 식에서 *p는 포인터로 선언을 해줍니다.(하나의 변수)&x는 변수 x가 저장되어있는 주소값을 의미합니다.즉, 위의 수식은 x의 주소값을 &x를 통해 불러오고, *p는 주소에 저장된 값을 반환하므로 해당 주소값에 있는 10을..

WEEK 05 리눅스, C언어 TIL(4월11일 금요일)

오늘은 본격적인 5주차의 시작이다.10:30 ~ 12:00우리 팀의 코어 타임은 아침 시간대에 하기로 해서 코어타임을 하고 왔다.코어타임 내용을 대강 정리해보았다.코어타임리눅스에 대해리눅스는 명령어에서 커널로 넘기고 커널을 통해 하드웨어를 제어한다.리눅스가 전세계에서 제일 많이 쓰는 OS이다. 범용성이 좋다.리눅스 모든 작업은 프로세스 단위로 실행, PID기준(프로세스 ID), 프로세스는 독립된 공간을 가진다.계층 구조유저들의 권한을 나눠주는 것이다. UID기준으로 정렬유저이름@호스트이름0번은 root 계정이다. 모든걸 할 수 있다. 설치시 등 사용(sudo)가상화 타입 2가지가상화 타입2도커(OS 타입): 도커 프로세스로써 OS에 요청해서 커널을 통해 하드웨어를 조작(실행환경만 구성, 프로세스 단에서 ..

도커에서 GCC 돌리는 법

도커에서 GCC 돌리는 법Visual Studio Code에서 돌리는 도커에서는 우분투기반이라 기존의 파일 RUN으로는 컴파일 되지 않는다. 그러므로 C파일을 돌리고 싶으면 GCC로 컴파일해서 결과를 확인할 수 있다.이번에는 어떻게 내 C파일을 돌릴 수 있는지 알아보겠다.맨처음에 들어가면 이런식으로 써져 있을 것이다.jungle@11111111111:/workspaces/data_structures_docker$먼저 gcc버전을 확인해보고 안깔려 있으면 설치하자jungle@11111111111:/workspaces/data_structures_docker$ gcc --version# 설치코드$ sudo apt-get install gcc정상적으로 설치되었다면, c파일을 생성한다.vi [파일명].c생성 후..

728x90