반응형

CS/CS50

· CS/CS50
📚 시리즈 목차 1. 컴퓨팅 사고 2. C언어 3. 배열 4. 알고리즘 5. 메모리 6. 자료구조 1. 컴퓨팅 사고 1) 2진법 컴퓨터는 오직 0과 1로만 데이터를 표현한다. 즉, 우리가 흔히 사용하는 0,1,2,3,4,5,6,7,8,9 총 10개의 기호로 표현하는 10진법이 아니라 단 2개의 숫자로 컴퓨터는 모든 데이터를 다룬다. 그럼 두 개의 숫자로 어떻게 동작할까? 일반적으로 십진법은 아래와 같이 숫자를 표현한다. 백의 자리에 1, 10의 자리에 2 1의자리에 3 그래서 123이 완성이된다. 이는 10의 거듭제곱으로 표현되어있는것이다. 그런다면 오직 0과 1만 사용하는 2진법이라면 ? 2의 거듭제곱을 사용할 것이다. 만약 우리가 3이라는 숫자를 2진법으로 표현하려면 아래와 같다. 더보기 이와 같은 ..
· CS/CS50
📚 시리즈 목차 1. 컴퓨팅 사고 2. C언어 3. 배열 4. 알고리즘 5. 메모리 6. 자료구조 6. 자료구조 2) 배열의 크기 조정하기 배열 이미 만들었는데 크기를 변경하려고 한다면 어떻게해야할까? 안전하게 하려면 새로운 공간에 큰 크기의 메모리를 다시 할당하고 기존 배열의 값을을 하나씩 옮겨줘야한다. 왜 이미 할당된 메모리의 크기를 바로 조절을 못하고 임시 메모리를 새로 할당한 뒤 작업을 해줘야할까? 이미 할당된 메모리 옆에는 다른 값이 저장되어있어 메모리를 연속적으로 사용할 수 없기 때문에 조절하고자 하는 크기로 임시 메모리를 새로 할당하여 기존의 값을 그대로 옮겨주고 추가로 할당한 메모리에 새로운 값을 추가 할 수 있다. 쉽게말해 메모리를 사물함이라고 한다면 사용할 사물함의 개수를 한 번 정한..
· CS/CS50
📚 시리즈 목차 1. 컴퓨팅 사고 2. C언어 3. 배열 4. 알고리즘 5. 메모리 6. 자료구조 5. 메모리 1) 메모리 주소 일단 메모리 주소를 알보기전에 메모리 부터 알아야 한다. 1️⃣ 메모리 메모리는 영어로 당연히 memory라 하고 이는 여러분이 잘 아시는 것 처럼 "기억", "기록"을 뜻하는 영어단어이다. 컴퓨터에서도 마찬가지로 메모리는 기억을 하는 장치로 사용된다. 메모리는 데이터의 저장과 처리를 담당하여 컴퓨터 시스템의 핵심적인 역할을 수행한다. 풀어 말하면, 메모리는 컴퓨터가 실행 중인 프로그램과 작업에 필요한 데이터를 일시적으로 저장하는 장치로 우리가 일상적으로 사용하는 모든 프로그램과 작업에 불가능한 빠른 속도와 신속한 데이터 액세스를 제공한다. 컴퓨터 메모리는 크게 주기억장치와 보..
· CS/CS50
📚 시리즈 목차 1. 컴퓨팅 사고 2. C언어 3. 배열 4. 알고리즘 5. 메모리 6. 자료구조 📚 4. 알고리즘 1) 검색 알고리즘 1️⃣ 선형 검색 선형 검색은 가장 간단하고 직관적인 검색 알고리즘이다. 검색 방법은 배열의 인덱스를 처음부터 끝까지 하나씩 증가시키면서 방문하여 그 값이 속하는지를 검사하는 것이다. 선형 검색은 리스트를 처음부터 끝까지 순차적으로 탐색하기 때문에 최악의 경우 리스트의 길이에 비례하는 선형 시간 O(n)이 소요된다. (바로 다음에 배움) 즉, 리스트의 크기가 클수록 검색 시간이 증가한다. 따라서 선형 검색은 특정한 상황이나 작은 크기의 리스트에서 사용될 때 유용하다. 2️⃣ 이진 검색 이진 검색은 정렬된 배열 또는 리스트에서 특정한 값을 찾는 데 사용되는 검색 알고리즘이..
· CS/CS50
📚 시리즈 목차 1. 컴퓨팅 사고 2. C언어 3. 배열 4. 알고리즘 5. 메모리 6. 자료구조 3. 배열 1) 컴파일링 저번시간에 컴파일에 대해 궁금해서 찾아보다가 소스코드가 머신코드가 되기까지 4단계가 있다는 걸 알고 정리했는데 오늘 수업내용에서 자세히 나왔다. 복습하면서 더 자세히 알아보자 이전시간에도 배웠듯이 우리는 clang이나 make를 통해서 컴파일링을 해왔다. 그렇다면 이 clang과 make가 도대체 뭘까? clang clang은 C, C++, Objective-C, Objective-C++ 등의 언어를 위한 컴파일러 도구이다. 높은 성능과 최신 언어 기능 지원, 진단 메시지의 품질 등으로 인해 많은 개발자들에게 선호되는 컴파일러이다. 컴파일 단계에서 소스 코드를 기계어로 변환하여 실행..
· CS/CS50
📚 시리즈 목차 1. 컴퓨팅 사고 2. C언어 3. 배열 4. 알고리즘 5. 메모리 6. 자료구조 2. C언어 1) C 기초 C언어는 데니스 매캘리스터 리치라는 사람이 1972년에 만든 언어이다. (UNIX 운영체제도 만드신 대단한분) C언어로 코드를 짜면 속도가 빠르고 바이너리 크기도 작아 다른 무엇보다 중요한 임베디드 혹은 모바일 계열, 또는 시스템 프로그래밍 등에서 주로 쓰인다. 과거에는 메모리 가격이 비쌌던 만큼 메모리를 적게 잡아먹는 프로그래밍 기법을 선호했으며, 화성 탐사선도 이러한 점을 반영하여 C언어로 만든 프로그램을 사용했다. 이렇게 C는 아주 오래되고 전통적인 순수 텍스트 기반의 언어이다. 자 그럼 어떤 언어이든 "hello, world" 출력하는 것으로 시작하는데 C언어는 어떻게 하는..
개발자성장기
'CS/CS50' 카테고리의 글 목록