본문 바로가기

cs50

(6)
메모리의 구조 (코드, 데이터, 힙, 스택 영역) 목차 메모리 코드(code) 영역 데이터(data) 영역 힙(heap) 영역 스택(stack) 영역 오버 플로우 메모리 위 그림과 같이, 프로그램이 실행되기 위해서는 운영체제(OS)가 프로그램의 정보를 메모리에 로드 해야 한다. 또한 프로그램이 실행되는 동안 CPU가 코드를 처리하기 위해서는, 메모리가 명령어와 데이터들을 저장해야 한다. 이렇게 프로그램이 운영체제(OS)로 부터 할당받는 대표적인 메모리 공간은 코드(code) 영역, 데이터(data) 영역, 힙(heap) 영역, 스택(stack) 영역으로 구성되어 있다. 코드(code) 영역 코드 영역은 실행할 프로그램의 코드가 저장되는 영역이다. 텍스트 영역이라고 부르기도 한다. CPU는 코드 영역에 저장된 명령을 하나씩 가져가서 처리하게 된다. 프로그..
탐색 알고리즘 (검색 알고리즘: 선형검색과 이진검색) 목차 탐색 알고리즘이란 선형 검색이란 C언어로 선형 검색을 구현한 코드 이진 검색이란 C언어로 이진 검색을 구현한 코드 선형 검색과 이진 검색의 시간복잡도 탐색 알고리즘 이란? 탐색 알고리즘이란 수많은 데이터들 사이에서 원하는 데이터를 찾는 알고리즘이다. 실제로 검색 엔진에 탐색 알고리즘이 많이 사용되기도 한다. 그래서 탐색 알고리즘을 검색 알고리즘이라고 부르기도 한다. 오늘은 탐색 알고리즘 중 선형 검색과 이진 검색에 대한 내용을 다룰 것 이다. 선형 검색 이란? 선형 검색은 위의 그림처럼, 가장 좌측부터 우측까지 순서대로 원하는 데이터를 찾아보는 알고리즘이다. 즉 첫 번째부터 끝까지 하나하나 확인하는 알고리즘이다. 선형 검색은 배열이 정렬되어 있지 않던, 정렬되어 있던 이용할 수 있다. 하지만 하나하..
알고리즘 표기법 (시간 복잡도: Big O 와 Big Ω) 목차 시간 복잡도란? Big-O 란? Big-O 의 종류 Big-Ω 란? Big-Ω 의 종류 Big-O가 낮은 알고리즘이 좋을까? Big-Ω가 낮은 알고리즘이 좋을까? 시간 복잡도란? 시간 복잡도란 입력값과 문제를 해결하는 데 걸리는 시간을 함수 관계로 나타낸 것 이다. 즉 실행시간을 기준으로, 알고리즘이 얼마나 효율적인지를 판단할 수 있는 척도이다. 시간 복잡도는 최악의 경우, 최선의 경우, 평균의 경우를 계산해서 나타낸다. 이때 최악의 경우는 Big-O(빅-오), 최선의 경우는 Big-Ω(빅-오메가), 평균의 경우는 Big-θ(빅-세타)로 나타 낸다. 이번 글은 Big-O(빅-오)와 Big-Ω(빅-오메가)에 대한 내용만 다룰 것 이다. Big-O 란? Big-O(빅-오) 란, 위에서 언급했듯이 최악의..
비트와 바이트 목차 비트(bit)와 바이트(byte) 비트(bit)와 바이트(byte)의 활용 컴퓨터는 아날로그 신호인 소리를 어떻게 디지털로 저장할까? 컴퓨터의 CPU는 1초에 몇 개의 bit(0과 1)를 처리할 수 있을까? 비트(bit)와 바이트(byte) 비트(bit)는 0과 1, 두가지 값만 가질 수 있는 측정 단위이다. 즉 2진법으로 표현된 수에서 각각의 자릿수 하나를 비트라고 한다. 그러므로 사진 맨 윗줄의 00110101은 8개의 비트가 줄 세워져 있다고 볼 수 있다. 바이트(byte)는 비트 8개의 비트열이라고 생각하면 된다. 즉 1byte = 8bit 인 것이다. 한 바이트에는 8개의 비트가 있으므로, 한 바이트에서 표현될 수 있는 경우는 2×2×2×2×2×2×2×2=256 가지 이다. 비트(bit)와..
컴퓨터와 2진법의 관계 목차 2진법 이란? 2진법의 표현법 컴퓨터와 2진법의 관계 컴퓨터가 2진법을 사용하는 이유 컴퓨터는 왜 기술이 진보한 지금까지도 2진법을 사용할까? C언어로, 10진법을 2진법으로 바꿔주는 프로그램 개발 2진법 이란? 인간은 10진법을 사용하고 있다. 10진법이란, 0~9라는 10가지의 숫자를 이용해서 수를 나타내는 진법이다. 그렇다면 2진법은 무엇일까? 2진법이란, 0과 1이라는 두 개의 숫자만을 사용하여 수를 나타내는 진법이다. 따라서, 진법에 따라 같은 수가 다르게 표현되기도 한다. 10진법 2진법 1 0001 2 0010 3 0011 4 0100 5 0101 6 0110 7 0111 8 1000 9 1001 10 1010 (+ 8진법은 0~7을 사용하고, 16진법은 0~9와 A~F까지 총 15의 ..
[대외활동] 부스트 코딩 뉴비 챌린지 2020 기간 2020 / 07 / 10 ~ 2020 / 08 / 28 동기 저번에 빅데이터 전문가 자격증을 공부하고 나서 컴퓨터 기초 지식을 공부할 필요성을 느꼈다. 그래서 공부할 방법을 알아보다가 부스트 코딩 뉴비 챌린지 2020을 알게되어서 참가 신청을 하게 되었다. 2020/07/23 - [Life/2020] - [자격증] 한국 사이버 진흥원 - 빅데이터 전문가 자격증 [자격증] 한국 사이버 진흥원 - 빅데이터 전문가 자격증 기간 2020 / 06 / 02 ~ 2020 / 07 / 07 동기 개인 맞춤형 플랫폼에 관심이 생기면서, 관련 분야인 빅데이터에 대해 공부해 보고 싶어졌다. 블로그, 유튜브, 책 등의 다양한 방법으로 빅데이터를 공부할 수 all-young.tistory.com 부스트 코딩 뉴비 챌린..