본문 바로가기

Today I Learned

(74)
21/09/20 모두를 위한 컴퓨터 과학 (CS50 2019) - 메모리 6) 메모리 할당과 해제 malloc : 메모리 할당 함수 free : 메모리 반환 함수 valgrind : 코드 상의 메모리 누수를 확인할 수 있는 프로그램 💬 제한된 메모리를 가지고 메모리를 해제하지 않으면 메모리 부족하게 된다. 7) 메모리 교환, 스택, 힙 추상적으로 나타낸 컴퓨터 메모리의 공간 할당 💬 메모리 영역을 다양하게 나누는 이유는 제한된 공간을 효율적으로 활용하기 위한 것이다. 영역을 나눠놔야 상황에 맞게 접근하기 쉬울 것 같다. 8) 파일 쓰기 stack overflow heap overflow 배열 : 메모리가 연속적으로 할당된 공간 문자열 : 문자가 연속적으로 있음. 💬 cs50.h 라이브러리 보조바퀴 떼기 long l; g..
21/09/19 모두를 위한 컴퓨터 과학 (CS50 2019) - 알고리즘, 메모리 7) 재귀 구글에 recursion을 검색하면... 다시 recursion을 찾으셨나요?하고 묻는 구글의 유머😅 재귀란 원래 있던 자리로 다시 돌아오는 것이다.. 💬 중복 코드를 줄이기 위해서 반복문 대신에 재귀를 사용한다. 8) 병합 정렬 💬 강의 마지막에 나온 알고리즘의 실행 속도를 보면 알 수 있듯이 병합 정렬은 선택 정렬이나 버블 정렬보다 속도가 확연히 빠르다. 다만 O(n log n) 상한을 가지고 있고, 최선의 경우일 때도 Ω(n log n)이기 때문에 이미 자료가 정렬된 경우엔 시간과 메모리를 낭비할 수 있다. 1) 메모리 주소 10진수와 비교하기 위해서 16진수를 표현할 때는 앞에 0x 를 붙여준다. C언어에서 변수 앞에 ..
21/09/18 모두를 위한 컴퓨터 과학 (CS50 2019) - 알고리즘 3) 선형 검색 선형 검색 : 원하는 자료를 찾을 때까지 처음부터 마지막 자료까지 차례대로 검색 반환 값의 관습적인 의미 0 성공 1 실패 💬 어떤 정적인 정보. 예를 들어 도서관 회원관리에 필요한 회원 정보. 이름, 회원번호가 들어가 있을 것이다. 4) 버블 정렬 버블 검색 : 정렬 알고리즘 중 하나. 두 개의 인접한 자료를 비교하면서 위치를 교환하는 방식의 정렬 💬 n값이 크거나 이미 정렬되어 있는 자료를 정렬할 때 비효율적이다. 반대로 n값이 작거나 정렬되지 않은 자료를 정렬할 때 효율적이다. 5) 선택 정렬 선택 정렬 : 자료들 중에서 가장 작은 자료를 찾아 첫번째 위치의 수와 교환해주는 정렬 💬 선택 정렬을 효율적으로 바꾸기 위한 방법은..
21/09/16 모두를 위한 컴퓨터 과학 (CS50 2019) - 배열, 알고리즘 8) 명령형 인자 = command-line argument #include #include int main(int argc, string argv[]){ if (argc == 2){ printf("hello, %s\n", argv[1]); }else{ printf("hello, world\n"); } } main 함수는 인자를 2개 가지는데, int형 argc와 string 배열 argv이다. argc는 입력받는 문자열 개수이고 argv는 입력받는 문자열이다. 위의 예제 코드는 입력받은 인자가 있으면 hello, argv[1] 라고 출력하고 인자가 없으면 hello, world 만 출력한다. argc 변수를 2와 비교하고 있는데, 그 이..
21/09/14 모두를 위한 컴퓨터 과학 (CS50 2019) - 배열 5) 배열2 동적으로 작성한 코드는 확장성이 있지만 코드 작성에 시간이 많이 소요된다. 6) 문자열과 배열 널 종단 문자는 C에게 문자열이 끝난다는 것을 알려준다. 7) 문자열의 활용 int n = strlen(s); for(int i = 0; i < n; i++){ … } 두 줄로 나타내는 것보다 for(int i = 0, n = strlen(s); i < n, i++){ … } 한 줄로 나타내는 것이 간결하다. 유용한 사이트 소개 각 글자의 10진수를 보여주는 사이트 CS50 프로그래머를 위한 유용한 프로그래밍 도구 정리 ctype.h, string.h 사용 예제 찾아보기
21/09/12 모두를 위한 컴퓨터 과학 (CS50 2019) - 배열 3) 코드의 디자인 프로젝트 내에서 사람들 각자 코드 스타일이 다르다면 서로의 코드를 이해하는 데에 시간이 걸릴 것이다. 다른 사람의 코드를 마주칠 때마다 매번 그래야하므로 비효율적이다. 강의 듣고 나서 고무 오리를 하나 갖고 싶어졌다. 4) 배열1 메모리 역할을 하는 RAM. 작은 노란 사각형 하나가 1바이트라고 생각하면 편하다. 실생활에서 배열로 나타낼 수 있는 데이터는 강의에 나온 예시처럼 학생들의 성적이나 아파트의 세대원 수가 있겠다. 같은 종류로 분류할 수 있는 데이터면 모두 가능하다.

728x90