CS50
-
CS50 2019 (17)연결리스트-트리, 해시테이블, 트라이, 큐, 스택, 딕셔너리CS50 2023. 3. 18. 18:10
--- www.boostcourse.org/cs112 모두를 위한 컴퓨터 과학 (CS50 2019) 부스트코스 무료 강의 www.boostcourse.org 1.컴퓨팅사고 2.C언어 3.배열 4.알고리즘 5.메모리 6.자료구조 --- 6)연결 리스트: 트리 연결 리스트를 활용해서 보다 더 다양한 데이터 구조를 만들 수 있습니다. 연결 리스트에서는 각 요소가 다른 요소를 하나씩만 가리키고 있었습니다. 만약 가리키는 요소가 여러개가 된다면 어떤 장점과 단점이 있을까요? 이번 강의에서는 ‘트리’라는 연결 리스트 기반의 자료 구조를 알아보겠습니다. --- 배열 : 크기 바꿀 수 있고, 임의 접근을 통해 이진 탐색을 쓸 수 있어서 정렬된 리스트에서 탐색할 때 실행 시간이 log n(▽가운데로 바로 갈 수 있다는 ..
-
CS50 2019 (16)자료구조란, 연결리스트, 구조체, 연결리스트 코딩, 시연CS50 2023. 3. 18. 03:33
--- www.boostcourse.org/cs112 모두를 위한 컴퓨터 과학 (CS50 2019) 부스트코스 무료 강의 www.boostcourse.org 1.컴퓨팅사고 2.C언어 3.배열 4.알고리즘 5.메모리 6.자료구조 --- 3)연결 리스트: 도입 ∴ 결론 : 연결 리스트는 원하는 만큼 리스트를 크게 만들 수 있다 동적으로. 배열은 리사이징 하고 값을 옮겨야 돼 우리는 여러 자료형의 데이터를 메모리 상에 저장하고 읽고 삭제하는 방법을 배웠습니다. 컴퓨터 프로그램은 이러한 데이터를 이용해서 다양한 작업을 수행할 수 있습니다. 하지만 좀 더 복잡한 프로그램을 구현하다 보면 기본적인 포인터 구조만 이용해서 메모리를 관리하기에는 다소 번거로울 때가 많습니다. 만약 메모리를 좀 더 효율적으로 관리하고 사..
-
CS50 2019 (15)★malloc()&선언&초기화, O(n), dynamic&malloc, 배열&포인터CS50 2023. 3. 16. 05:18
--- www.boostcourse.org/cs112 모두를 위한 컴퓨터 과학 (CS50 2019) 부스트코스 무료 강의 www.boostcourse.org 1.컴퓨팅사고 2.C언어 3.배열 4.알고리즘 5.메모리 6.자료구조 --- 1)malloc과 포인터 복습 이번 강의부터는 C로 구현할 수 있는 다양한 데이터 구조를 배우게 됩니다. 데이터 구조를 정의하고 관리하는데 있어서 메모리와 포인터에 대한 개념을 정확히 이해하는 것이 중요합니다. 먼저 지난 시간에 배운 malloc 함수와 포인터를 복습 할 수 있는 작은 예제를 살펴 보겠습니다. 지난시간엔 &n 포인터로 메모리의 실제 주소를 확인할 수 있었고 *x, malloc(), free() 메모리를 관리하는 법을 배움 --- 버그가 있는 짧은 코드 보기 ..
-
CS50 2019 (14)메모리3, swap, call by value(reference), 힙스택, buffer overflow, 변수초기화, csv, argc, argvCS50 2023. 3. 13. 04:19
--- www.boostcourse.org/cs112 모두를 위한 컴퓨터 과학 (CS50 2019) 부스트코스 무료 강의 www.boostcourse.org 1.컴퓨팅사고 2.C언어 3.배열 4.알고리즘 5.메모리 6.자료구조 --- 7)메모리 교환, 스택, 힙 각각 사이다와 콜라가 들어있는 컵 두 개를 떠올려봅시다. 만약 사이다와 콜라를 각각 다른 컵으로 바꿔 담고 싶으면 어떻게 해야 할까요? 교환을 도와줄 수 있는 새로운 컵이 잠시 필요하겠죠. 그렇다면 메모리에 저장된 값들을 교환할 때도 이와 비슷하게 할 수 있을까요? 메모리에 저장된 두 값을 교환하는 코드를 작성할 수 있습니다. --- bublle sort, selection sort에서 swap이 엄청 유용했다 임시 공간이 없으면 맞교환 하는게 ..
-
CS50 2019 (13)메모리2, 주소+1, malloc(), segfaultCS50 2023. 3. 12. 05:52
--- www.boostcourse.org/cs112 모두를 위한 컴퓨터 과학 (CS50 2019) 부스트코스 무료 강의 www.boostcourse.org 1.컴퓨팅사고 2.C언어 3.배열 4.알고리즘 5.메모리 6.자료구조 --- 저번 시간 했던거 약간 *s로 하면 E가 나옴(%c로 해야한다) 다음 글자를 출력할 땐? 아깐 s[1]였는데 ▽=""하면 배열이 만들어지는구나 1을 더하면 두 번째 글자가 됨 ▽저게 아마 s라는 숫자 주소에다가 1을 더한것?일걸 int는 4더하고 그랬던 것 같은데 ▽칸 칸이 바이트 바이트 니까 바이트끼리 주소차이가 1인가? 포인터 연산 +1 같은건 바이트 한칸 이동인거군 대괄호는 컴퓨터 과학에서는 구문 설탕 이라고 함. 프로그래머에게 유용한 기능을 의미함. s[0]이나 s[..
-
CS50 2019 (12)메모리, 16진수, 진법 직관, 포인터, 문자열CS50 2023. 3. 11. 23:17
--- www.boostcourse.org/cs112 모두를 위한 컴퓨터 과학 (CS50 2019) 부스트코스 무료 강의 www.boostcourse.org 1.컴퓨팅사고 2.C언어 3.배열 4.알고리즘 5.메모리 6.자료구조 --- 1)메모리 주소 우리가 C로 작성한 변수들은 실제로 컴퓨터 메모리에 어떻게 저장될까요? 메모리 주소를 나타내는 방법과 그 주소를 알아내는 방법, 그 주소에 찾아가는 방법을 배워봅시다. --- 학습 목표 - 16진법을 읽고 쓸 수 있습니다. - 메모리 주소에 접근하고 값을 받아오는 코드를 C로 작성할 수 있습니다. --- 강의 시작~ 보조바퀴인 cs50라이브러리를 떼어내는 날, 알고리즘을 배웠었는데 좀 더 실용적이고 체계적인 부분 제일 먼저 배울 건 수를 세는 새로운 방식 1..
-
CS50 2019 (11)merge sortCS50 2022. 7. 16. 18:03
=== www.boostcourse.org/cs112 모두를 위한 컴퓨터 과학 (CS50 2019) 부스트코스 무료 강의 www.boostcourse.org 1.컴퓨팅사고 2.C언어 3.배열 4.알고리즘 5.메모리 6.자료구조 ===================== 8)병합 정렬 ▽동영상, 텍스트, pdf 전부 봐도 이렇게 할거면 처음에 8개를 4개 4개로 나눴을 때 병합하면 되는거 아니야? 두 배열중에 가장 작은 값을 앞에다두는거면. 에 대한게 해결이 안됨. 저게 안되는 원리와 그 성능 잴 때 n이 정확히 뭔지 알아야 이해가 될 듯 === 영상 강의 설명 재귀를 활용한 정렬 알고리즘! 병합 정렬, merge sort 버블이나 선택보다도 뛰어난 알고리즘 이렇게 생겼다 입력으로 어떤 정보의 배열이 주어졌을..
-
CS50 2019 (10)recursion, 쌓이는 것CS50 2022. 7. 16. 16:31
=== www.boostcourse.org/cs112 모두를 위한 컴퓨터 과학 (CS50 2019) 부스트코스 무료 강의 www.boostcourse.org 1.컴퓨팅사고 2.C언어 3.배열 4.알고리즘 5.메모리 6.자료구조 ===================== 7)재귀 최다득표자를 선거의 승자로 하거나 결선 투표로 하거나 여러명을 고르게 하거나 등의 알고리즘이 있다 생활에서도 다양하게 쓰이고 있다는 말 수많은 정렬 알고리즘이 존재한다 중요한 몇가지만 볼 것, O(n^2)보다 더 나은 이제부터 컴퓨터 공학을 배우면서 여러분의 생각을 흔들어 버릴 수많은 개념 중 하나를 소개할 것 목표는 경험해보는 것 다양한 개념을 적용하다보면 점차 익숙해질 것 === 재귀의 핵심 개념을 위해 예제를 하나 볼 것. 첫주..