목록ProgrammingLanguage (15)
모노산달로스의 행보
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/Ijqub/btsIyiXXGp3/Nok54qvuYAAVK1YiFN10H0/img.webp)
Algorithm - 그리디 알고리즘알고리즘은 컴퓨터 과학의 핵심 요소이다. 검색 알고리즘 덕분에 데이터의 바다에서 원하는 것을 추출할 수 있다. 정렬 알고리즘은 난잡한 데이터들을 잘 정리하여 가공할 수 있도록 만들어준다. 그래프 알고리즘은 효율적인 연결 경로를 찾는데에 필수적이다. 알고리즘 지식은 프로그래밍과 시스템 설계에서 복잡한 문제를 해결하는데 필수적이다.그리디 알고리즘(Greedy Algorithm) 정의그리디 알고리즘은 항상 명확하고 즉각적인 이익이 되는 것을 선택하는 알고리즘입니다. 매 순간에 가장 이익이 되는 것을 선택하는 최적화 문제에서 사용합니다. 빠르게 구현이 가능하고 간단하게 작동하는 장점이 있습니다. 다른 말로 탐욕 알고리즘이라고도 부릅니다. 그리디 알고리즘을 구현하는 단계는 매..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/bRpJzJ/btsIwYqYUg3/cqB2o3VSDT0unFxmClTAU0/img.webp)
Algorithm - 에라토스테네스의 체 알고리즘은 컴퓨터 과학의 핵심 요소이다. 검색 알고리즘 덕분에 데이터의 바다에서 원하는 것을 추출할 수 있다. 정렬 알고리즘은 난잡한 데이터들을 잘 정리하여 가공할 수 있도록 만들어준다. 그래프 알고리즘은 효율적인 연결 경로를 찾는데에 필수적이다. 알고리즘 지식은 프로그래밍과 시스템 설계에서 복잡한 문제를 해결하는데 필수적이다.소수(Prime number)란 무엇인가? 소수란 1과 자기 자신으로 밖에 나누어 떨어지지 않는 수를 의미합니다. 만약 1과 자기 자신이 아닌 수로 소수를 나눈다면 0이 아닌 나머지를 얻게 됩니다. 요소가 둘 보다 많은 수는 합성수(Composite number)라고 표현합니다. 생각나는 소수가 있으신가요? 2, 3, 5, 7, 11 .....
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/S7XHL/btsGNcSF8lH/YTxgnzC8z7ILeXUYughw00/img.png)
C programming -큐(Queue) 리눅스 환경에서 네트워크 프로그래밍을 공부하기 위해서 C언어를 다시 복습해야 할 필요성을 느꼈습니다. 따라서 이번 기회에 배열부터 전처리기까지 내용들을 정리하겠습니다. 큐란? 스택은 선형 자료구조로서 First In First OUT (FIFO) 규칙을 따릅니다. 즉, 처음에 들어온 요소가 가장 먼저 제거된다는 뜻입니다. #define MAX 10 int queue[MAX]; int front, rear; void put(int k) { // rear가 한계를 넘지 않았으면 queue[++rear] = k; } int get() { // 큐가 비어있지 않으면 return queue[front++]; } 큐의 기본적인 구현은 위와 같습니다. 스택과 마찬가지로 배열..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/bQuE7q/btsGMGNgF2A/LQ05hPsxbjNATmRHh4q9P1/img.png)
C programming -스택(Stack) 리눅스 환경에서 네트워크 프로그래밍을 공부하기 위해서 C언어를 다시 복습해야 할 필요성을 느꼈습니다. 따라서 이번 기회에 배열부터 전처리기까지 내용들을 정리하겠습니다. 스택이란? 스택은 선형 자료구조로서 Last In First OUT (LIFO) 규칙을 따릅니다. 즉, 마지막에 들어온 요소가 가장 먼저 제거된다는 뜻입니다. 마치 접시들이 쌓여있는 모습이라고 생각하면 됩니다. #define MAX 10 int stack[MAX]; int top; int push(int t) { if (top >= MAX-1) { printf(“Stack overflow\n”); return -1; } stack[++top] = t; return t; } int pop() { ..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/cjWp8e/btsGIOelGQj/l5JYC3K1JITkBz6H5Z628K/img.png)
C programming - 연결 리스트 (Linked List) 리눅스 환경에서 네트워크 프로그래밍을 공부하기 위해서 C언어를 다시 복습해야 할 필요성을 느꼈습니다. 따라서 이번 기회에 배열부터 전처리기까지 내용들을 정리하겠습니다. 연결 리스트란? 연결리스트는 노드라고 불리는 구조체들의 체인으로 이루어져있습니다. 각 노드는 다음 노드를 가리키는 포인터를 가지고 있습니다. 연결 리스트는 삽입 삭제가 편리하고 메모리를 효율적으로 관리할 수 있습니다. 해당 포스트에서는 실제로 C언어를 통해 연결 리스트를 구현하면서 공부해보겠습니다. 연결 리스트 노드 생성과 삽입 가장 먼저 구조체 노드를 정의하겠습니다. struct node { int value; struct node *next; }; 노드는 값과 다음 노드..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/cU2pJc/btsGLDaQjCZ/UtFlxOaGHsDtXRwOZT4TsK/img.png)
C programming - 동적 메모리 할당 리눅스 환경에서 네트워크 프로그래밍을 공부하기 위해서 C언어를 다시 복습해야 할 필요성을 느꼈습니다. 따라서 이번 기회에 배열부터 전처리기까지 내용들을 정리하겠습니다. 동적 메모리란? 프로세스의 메모리 구조는 위와 같이 4개로 구분됩니다. 그중에서 힙 영역은 프로그램이 실행되는 동안 동적으로 메모리를 할당할 수 있는 영역을 의미합니다. 힙 영역의 특징으로서 프로그래머가 요구할 경우 런타임 중에 동적 메모리 할당이 이루어집니다. 그렇다면 왜 동적 메모리 할당을 요청할까요? int array[5]; array[0] = 10, array[1] = 20, array[2] = 30; int array[2]; array[0] = 10, array[1] = 20, arr..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/bo5kQQ/btsGHGS200i/9kagX3j9KUTzkApukZjJSK/img.png)
C programming - 구조체와 열거형 리눅스 환경에서 네트워크 프로그래밍을 공부하기 위해서 C언어를 다시 복습해야 할 필요성을 느꼈습니다. 따라서 이번 기회에 배열부터 전처리기까지 내용들을 정리하겠습니다. 구조체란? 구조체가 대체 무엇일까요? 사전적으로는 하나 이상의 변수를 묶어 그룹화 하는 사용자 정의 자료형을 의미합니다. 위 사진 처럼 Cat 이라는 구조체가 name과 breed 그리고 age이라는 멤버 변수를 가진 것 처럼 말이죠. Java와 같은 언어에서 사용하는 Class와도 유사한 점이 존재합니다. 구조체의 목적은 데이터를 하나로 모아 구조적으로 만들어 데이터 참조를 용이하게 하는 것입니다. 예를 들어 고양이의 이름을 참조하는 함수가 100개 정도 있다고 생각해봅시다. 만약 여기서 고양..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/Glln4/btsGGOK5VsK/zslsSQPUINwZYVqka4qkDk/img.png)
C programming - 표준 함수 리눅스 환경에서 네트워크 프로그래밍을 공부하기 위해서 C언어를 다시 복습해야 할 필요성을 느꼈습니다. 따라서 이번 기회에 배열부터 전처리기까지 내용들을 정리하겠습니다. 표준함수란? 표준함수에 대해서 들어보셨나요? 그 의미는 정확히 몰라도 우리는 이미 그것을 여러 번 사용하고 있었습니다. 표준함수란 C언어 라이브러리에 저장되어 있어 사용자가 헤더파일을 통해 불러와 사용할 수 있는 함수입니다. 즉, 사용자가 필요한 기능이 미리 지정되어 있어 편하게 가져다 쓸 수 있는 것들입니다. 이번 포스트에서는 간편하게 대표적인 표준함수들에 대해서 소개하겠습니다. gets() 함수와 puts() 함수 헤더파일 stdio.h에 속하는 두 함수는 문자열을 입력하고 출력하는 역할을 수행합..