libft - isalpha, isdigit, isalnum isalpha 함수원형 intft_isalpha(int c) 리턴값 알파벳 대문자 "A-Z"는 1을 반환. 알파벳 소문자 'a-z"는 2를 반환. 알파벳이 아닌것은 0을 반환합니다. #include "libft.h" intft_isalpha(int c) { if (c >= 'a' && c = 'A' && c = 'a' && c = 'A' && c = '0' && c = 'a' && c = 'A' && c = '0' && c 42Seoul/libft 2023.03.24
Makefile Makefile으로 libft.a 라이브러리 만들기 Makefile은 쉽게 설명해서 아주 큰 프로젝트를 진행할 때 소스 파일(C파일)들을 한 번에 컴파일을 해야된다. gcc 컴파일러를 사용하여 한 번에 컴파일을 하려고 했을 때 gcc strlen.c putchr.c 즉, gcc를 할 때 뒤에 모든 파일들이 와야한다. 만약 파일들이 100개 정도가 오면 적어줄 파일이 너무 많다. 그게 너무 귀찮아서 개발자분들이 makefile이라는 것을 만들었다고 생각하면 된다. Makefile 기본 구조 Makefile은 타겟(Target), 의존성(Depedency), 명령(Recipe)의 세가지로 나뉜다. : (tab) target은 대상 이름, 명령어에 의해 생성되는 파일, 아카이브 파일, 오브젝트 파일임. 즉 실.. 42Seoul/libft 2023.03.23
libft.h 헤더 파일 만들기 libft.h 헤더 파일 만들기 참고 사이트 [C] 헤더파일 만들기 [C] 헤더파일 만들기 C언어에서 헤더파일을 만들어보자. velog.io 헤더 파일 : 매크로를 정의한다. 헤더 파일을 통해 자신이 사용하는 함수, 구조체, 라이브러리, C표준 라이브러리를 추가 하여 자신만의 헤더 파일을 만들 수 있다. 헤더 파일 작성법 1.libft.h 헤더 파일 작성 2.libft.h 헤더 파일이 있는지 ifndef로 검사 후 없으면 define을 통해 정의한다. endif로 헤더 파일 종료를 알린다. #ifndef LIBFT_H # define LIBFT_H #endif 헤더 파일 작성 #ifndef LIBFT_H # define LIBFT_H # include # include # include typedef s.. 42Seoul/libft 2023.03.23
5장 정렬 로그 공부하고 뒤에 한 번 보자. 또한 속도 즉 식이 나오는 것을 다시 공부해보자 정렬부터는 알고리즘에 대해서 배운다. 알고리즘(Algorithms) 9세기 페르시아의 수학자 '아부 압둘라 무하마드 이븐 무사 알 콰리즈키의 이름에서 따온 이름 : 문제를 해결하기 위한 일련의 명령이나 반복되는 절차를 말한다. 이번에 배우게 되는 알고리즘은 데이터를 일련의 명령이나 반복되는 절차에 의해 정렬을 수행하는 정렬 알고리즘이다. 세 가지의 알고리즘을 설명할 것이다. 버블 정렬, 삽입 정렬, 퀵 정렬 콩쥐에게 텍스트 에디터와 C 컴파일러만 설치된 컴퓨터(1초에 200회만의 연산이 간으한 고물)와, 3만 명이나 되는 학생들의 성적 데이터를 CD에 담아 콩쥐에게 건네주며 "내가 오늘 장에서 돌아올 때까지 석차 17,21.. C++/뇌를 자극하는 알고리즘 2022.02.14
1.3 차수 높은 프로시저로 요약하는 방법 연산에서 쓰는 수가 어떤 수인지는 가리지 않고, 연산만 간추린 것이 있었다. 이 프로시저는 정수인지 실수인지 가리지 않고 곱할 수만 있다면 그 수를 세제곱 하도록 식을 간추려 놓은 것이다. 그런데 프로시저를 만들지 않으면 이 그림처럼, 연산이 필요할 때 마다 식을 만들어서 문제를 풀 수도 있다. 하지만 이렇게 하는 것은, 문제를 푸는 눈높이에 맞는 연산을 쓰지 못하고 언어에 기본으로 붙박여 있는 연산(여기서 곱셈)만 가지고 푸링업을 나타내야 하기 때문에 결코 좋은 방법이 아니다. 프로그래밍 언어에는, 계산에서 되풀이되는 방법을 간추려서 이름을 붙이는 힘, 곧 문제를 푸는 눈높이에 맞는 표현 수단을 곧바로 만들어 쓰는 기능이 있어야 한다. 그런 기능 하나가 바로 프로시저이다. 되풀이 되는 계산 방법을 간추.. 컴퓨터 프로그램의 구조와 해석/1장 프로시저를 써서 요약하는 방법 2022.02.02
4장 트리 나무 모양의 자료구조인 트리는 응용 분야가 굉장히 다양하다. 어떤 트리는 조직도 같은 계층적인 데이터를 표현하는 데 사용되고, 어떤 트리는 수식을 표현할 때 사용됩니다. 또 어떤 트리는 집합을 나타내는 데 사용되며, 심지어는 데이터의 탐색을 위한 트리도 있다. 트리의 가장 중요한 응용 분야 중 하나는 탐색이다. 이것은 6장 탐색에서 더 알아보자. 트리는 나무를 닮은 자료구조이다. 컴퓨터 과학에서도 트리는 굉장히 활용도가 높은 자료구조이다. 운영체제의 파일 시스템이 트리 구조로 이루어져 있고, HTML이나 XML 문서를 다룰 때 사용하는 DOM(Document Object Model)도 트리 구조로 이루어져 있다. 검색 엔진이나 데이터 베이스도 트리 자료구조에 기반해서 구현된다. 트리 트리는 뿌리(Root.. C++/뇌를 자극하는 알고리즘 2022.02.02
3장 큐 큐는 입력과 출력 창구가 따로 존재하고, 제일 먼저 들어간 데이터가 제일 먼저 나오는 자료구조이다. 근데 입력한 순서대로 데이터를 처리할 것 같으면 왜 큐를 사용할까? :데이터 입력이 폭주하는 경우를 생각해보자. 먼저 입력받은 데이터의 처리가 안 끝났는데 그 뒤에 새로운 데이터가 마구 입력되면 그 데이터들은 보관할 장소가 따로 없으므로 모두 버려야한다. 이럴 때 밀려드는 데이터를 '보관할 '장소로 큐가 필요하다. 먼저 들어가고 먼저 나오는(FIFO(First In First Out)), 또는 선입선출 자료구조를 큐라고 한다. 큐는 우리 말로 번역하면 대기행렬이라고 하는데, 대기가 기다리다. 행렬이 줄이라는 뜻이니 큐는 '기다리는 줄'이라고 할 수 있다. 큐의 주요 기능: 삽입과 제거 큐의 가장 앞 요소를.. C++/뇌를 자극하는 알고리즘 2022.02.02
2장 스택 스택은 아래에서부터 위로 쌓아 얹어 올리도록 하는 자료구조이다. 중간에 데이터를 삽입하거나 삭제하는 것을 허용하지 않는다. 데이터의 입/출력은 오로지 스택의 꼭대기에서만 이루어진다. 스택에서 가장 마지막에 들어간 데이터가 제일 먼저 나오고(Last In - First Out) 가장 먼저 들어간 데이터는 나중에 나오게(First-In - Last Out)된다. 즉, 이런 구조를 일컬어 FILO, LIFO이라고 부르는데, 요소의 삽입과 삭제가 자료구조의 한쪽 끝에서만 이루어지는 것이 특징이다. 스택의 주요 기능 삽입(Push)과 제거(Pop) 두 가지 뿐이다. 그 외 기능들은 이들 두 연산을 위한 보조 연산에 지나지 않는다. 삽잆 연산은 스택 위에 새로운 노드(또는 요소)를 '쌓는' 작업이다. 링크드 리스트.. C++/뇌를 자극하는 알고리즘 2022.02.01
1장 링크드 리스트 링크드 리스트란 : 리스트를 구현하는 여러 가지 기법 중에서도 가장 간단한 방법으로 꼽히는 자료구조 리스트 내의 각 요소는 노드(Node)라고 부릅니다. 노드는 우리말로 '마디'라는 뜻인데, 링크드 리스트는 '노드를 연결해서 만드는 리스트'라고 해서 붙여진 이름이다. 링크드 리스트의 노드는 데이터를 보관하는 필드와, 다음 노드와의 연결 고리 역할을 하는 포인터로 이루어진다. 리스트는 헤드(Head)와 테일(Tail)을 갖고 있습니다. 리스트의 첫 번째 노드를 헤드라 하고 마지막 노드를 테일이라고 한다. 링크드 리스트의 주요 연산 노드 생성/소멸 노드 추가: 링크드 리스트의 테일 노드 뒤에 새로운 노드를 만들어 연결하는 것 노드 탐색: 링크드 리스트가 갖고 있는 약점 중 하나이다. 헤드부터 시작해서 다음 .. 카테고리 없음 2022.02.01
1.2 프로시저와 프로세스 프로시저란, 한 컴퓨터 프로세스가 어떻게 나아가는지, 곧 지난 일을 발판 삼아 다음으로 해야 할 일을 밝힌 것이다. 이 절에서는 단순한 프로시저가 만들어 내는 프로세스 가운데 자주 나타나는 몇 가지 '꼴'을 보기로 들어서 살펴보려고 한다. 아울러 그런 프로세스가 쓰는 계산 자원, 곧 시간과 공간 자원이 어떤 비율로 늘어나는지도 따저볼 참이다. 1.2.1 되돌거나 반복하는 프로세스 사다리곱 함수 맞바꿈 계산법에 따라 식이 옆으로 펼처진 다음에 다시 줄어드는 꼴을 볼 수 있다. 프로세스가 곧바로 연산을 하지 않고 자꾸 미루어 놓는 탓에 식이 옆으로 늘어나다가, 곱셈 연산을 하면서 줄어들기 시작한다. 이처럼 곧바로 셈하지 못하고 미루어 놓는 연산이 끈처럼 이어지는 게 되도는 프로세스의 특징이다. 이런 프로세스.. 컴퓨터 프로그램의 구조와 해석/1장 프로시저를 써서 요약하는 방법 2022.01.31