CS

· CS
HTTP Hyper Text Transfer Protocol 서버/클라이언트간 데이터를 주고받기 위한 프로토콜이다. 이 때, 프로토콜이란 컴퓨터 간에 정보를 주고받을 때의 통신방법에 대한 규칙과 약속이다 HTTP는 HTML 등과 같은 거의 모든 형태의 리소스들을 가져올 수 있어 웹 서핑을 할 때 서버에서 각 사용자의 브라우저로 데이터를 전송해주는 용도로 가장 많이 사용된다. 즉, 웹 페이지에서 이루어지는 모든 데이터 교환의 기초가 된다고 이해할 수 있다. HTTP는 서버에서 브라우저로 암호화 되지 않은 평문 데이터를 전송한다. 별다른 보안 조치가 없다는 것이다. 그렇기 때문에 비밀번호나 주민등록번호 등의 개인정보를 주고받기에는 위험하다는 허점을 가지고 있다. HTTPS Hyper Text Transfer..
· CS
DFS Depth-First Search. 깊이 우선 탐색 그래프 탐색 알고리즘 중 한 가지이다. (그래프 탐색 알고리즘에는 흔히 너비 우선 탐색(BFS)와 깊이 우선 탐색(DFS)가 있다.) DFS는 그래프의 시작점에서 다음 브랜치로 넘어가기 전에, 해당 브랜치를 모두 완벽히 탐색한다. 모두 완벽히 탐색한다는 것은 아래 깊숙히까지 꼼꼼히 전부 방문한다는 것. 재귀 혹은 스택을 통해 탐색을 수행하며 더 이상 아래로 갈 곳이 없을 때까지 탐색하면 위로 다시 올라가 다음 브랜치로 넘어간다. DFS의 특징 자기 자신을 호출하는 순환 알고리즘의 형태를 갖거나, 명시적인 스택을 사용한다. 스택을 사용하는 경우, 방문한 정점들을 스택에 저장했다가 꺼내는 과정을 이용한다. 어떤 노드를 방문했었는지 여부를 반드시 검사..
· CS/CS50
boostcource 모두를 위한 컴퓨터 과학 (CS50 2019) : David J. Malan www.boostcourse.org/cs11 실습환경 : CS50 Sandbox & CS50 IDE 모두를 위한 컴퓨터 과학 (CS50 2019) 부스트코스 무료 강의 www.boostcourse.org 트라이 트라이는 각 노드가 배열로 이루어진 트리 형태의 자료 구조이다. 예를 들어 알파벳으로 이루어진 문자열 값을 저장한다고 하면 노드들은 a-z 값을 가지는 배열이 된다. 그리고 배열의 각 요소(알파벳)은 다음 층의 노드(a-z 배열)을 가리킨다. 아래는 Hermione, Harry, Hagrid 세 문자열을 트라이에 저장한 형태이다. 트라이에서 값을 검색하는데 걸리는 시간은 문자열의 길이에 의해 한정되기..
· CS/CS50
boostcource 모두를 위한 컴퓨터 과학 (CS50 2019) : David J. Malan www.boostcourse.org/cs11 실습환경 : CS50 Sandbox & CS50 IDE 모두를 위한 컴퓨터 과학 (CS50 2019) 부스트코스 무료 강의 www.boostcourse.org 자료 구조 자료 구조(데이터 구조)는 컴퓨터 메모리를 더 효율적으로 관리하기 위해 새로 정의하는 구조체로 일종의 메모리 레이아웃 또는 지도로 생각하면 된다. 자료 구조 중에는 연결 리스트, 해시 테이블, 트라이, 스택, 큐, 딕셔너리 등이 존재한다. 연결 리스트 연결 리스트는 각 값이 메모리 상의 여러 군데에 나누어져 존재하지만 바로 다음 값의 메모리 주소를 기억하고 있어 배열과 비슷하게 값을 연이어 읽을 ..
· CS/CS50
boostcource 모두를 위한 컴퓨터 과학 (CS50 2019) : David J. Malan www.boostcourse.org/cs11 실습환경 : CS50 Sandbox & CS50 IDE 모두를 위한 컴퓨터 과학 (CS50 2019) 부스트코스 무료 강의 www.boostcourse.org C로 구현할 수 있는 다양한 데이터 구조를 배우기 이전에 데이터 구조를 정의하고 관리하는데에 있어서 반드시 필요한 개념인 메모리와 포인터를 복습해보자. malloc과 포인터 복습 이전에 작성한 포스팅 '[CS][CS50] 메모리 - 메모리 주소 / 포인터', '[CS][CS50] 메모리 - 문자열 / 문자열 비교 / 문자열 복사 / 메모리 할당과 해제 / 메모리 교환, 스택, 힙' 참고 아래 코드의 문제점을..
· CS/CS50
boostcource 모두를 위한 컴퓨터 과학 (CS50 2019) : David J. Malan www.boostcourse.org/cs11 실습환경 : CS50 Sandbox & CS50 IDE 모두를 위한 컴퓨터 과학 (CS50 2019) 부스트코스 무료 강의 www.boostcourse.org 힙 오버플로우 / 스택 오버플로우 앞서 본 메모리 구조를 복습해보자. machine code : 프로그램이 실행될 때 그 프로그램이 컴파일된 바이너리가 저장된다. globals : 프로그램 안에서 저장된 전역 변수가 저장된다. heap (힙) : malloc 로 할당된 메모리의 데이터가 저장된다. malloc 에 의해 메모리가 더 할당될수록, 점점 사용하는 메모리의 범위가 아래로 늘어난다. stack (스택..
· CS/CS50
boostcource 모두를 위한 컴퓨터 과학 (CS50 2019) : David J. Malan www.boostcourse.org/cs11 실습환경 : CS50 Sandbox & CS50 IDE 모두를 위한 컴퓨터 과학 (CS50 2019) 부스트코스 무료 강의 www.boostcourse.org C로 작성한 변수들이 실제로 컴퓨터 메모리에 저장되는 모습에 대해서 알아보자. 메모리 주소를 나타내는 방법과 그 주소를 알아내는 방법, 그 주소에 찾아가는 방법을 차례로 보자. 문자열 복습해보자면 문자열은 문자의 배열이다. string s = "EMMA"; 위 처럼 선언된 변수 s은 사실은 ["E", "M", "M", "A", \0] 라는 문자열을 가리키는 포인터가 된다. 더 상세히는 문자열의 가장 첫번째 ..
· CS/CS50
boostcource 모두를 위한 컴퓨터 과학 (CS50 2019) : David J. Malan www.boostcourse.org/cs11 실습환경 : CS50 Sandbox & CS50 IDE 모두를 위한 컴퓨터 과학 (CS50 2019) 부스트코스 무료 강의 www.boostcourse.org C로 작성한 변수들이 실제로 컴퓨터 메모리에 저장되는 모습에 대해서 알아보자. 메모리 주소를 나타내는 방법과 그 주소를 알아내는 방법, 그 주소에 찾아가는 방법을 차례로 보자. 16진수 이전에 2진수에 대해서 공부한 적이 있는데 이번에는 16진수(Hexadecimal)다. 숫자를 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F 총 16개의 기호로 수를 표현하는 방식이다. ..
· CS/CS50
boostcource 모두를 위한 컴퓨터 과학 (CS50 2019) : David J. Malan www.boostcourse.org/cs11 실습환경 : CS50 Sandbox & CS50 IDE 모두를 위한 컴퓨터 과학 (CS50 2019) 부스트코스 무료 강의 www.boostcourse.org 재귀 함수가 본인 스스로를 호출해서 사용하는 것을 재귀(Recursion)라고 부른다. 재귀를 이해하는데에는 예시를 사용하는 것이 가장 좋다. 예시 : 피라미드 그리기 사용자로부터 높이 값을 받아 해당 높이 값을 가지는 피라미드를 출력하는 프로그램을 만들어보자. #include #include void draw(int h); int main(void){ int height = get_int("Height: ..
· CS/CS50
boostcource 모두를 위한 컴퓨터 과학 (CS50 2019) : David J. Malan www.boostcourse.org/cs11 실습환경 : CS50 Sandbox & CS50 IDE 모두를 위한 컴퓨터 과학 (CS50 2019) 부스트코스 무료 강의 www.boostcourse.org 정렬되지 않은 리스트를 탐색하는 것보다는 정렬한 뒤에 탐색하는 것이 더 효율적이며 이 정렬 방법들에 대해서 알아보자. 버블 정렬 버블 정렬이란 두 개의 인접한 자료 값을 비교하면서 위치를 교환하는 방식으로 정렬하는 방법이다. 단 두개의 요소만 정렬해주는, 좁은 범위의 정렬에 집중한다. 때문에 간단하지만 너무 많은 교환이 일어나는 낭비가 발생할 수도 있다. 만일 1부터 8까지의 숫자로 구성된 [6, 3, 8,..
개발하는 이령
'CS' 카테고리의 글 목록