전체 글
[CS50X] 2024 Week6 Python Problem Set 6 (DNA)
DNA 문제 링크 https://cs50.harvard.edu/x/2024/psets/6/dna/ DNA - CS50x 2024 Harvard University's introduction to the intellectual enterprises of computer science and the art of programming. cs50.harvard.edu 실제 코드 구현 import csv import sys def main(): # TODO: Check for command-line usage if len(sys.argv) != 3: return # TODO: Read database file into a variable with open(sys.argv[1]) as file: reader = c..
[CS50X] 2024 Week6 Python
Python 파이썬은 C에 비해 고수준 언어이다. 고수준 언어란 프로그램 밑단에서 실행되는 일들에 대해 덜 신경써도 되는 언어로 저수준 언어는 사람의 시간을 써서 컴퓨터의 시간 (성능)을 확보하고 고수준 언어는 컴퓨터의 시간 (성능)을 써서 사람의 시간을 아낀다. 시간이 지남에 따라 하드웨어는 점점 발전하고 C가 처음 나왔을 때와는 비교도 안될 만큼의 CPU성능과 메모리 크기를 가지고 있다. 그렇기에 고수준 언어의 영역이 더 확대되고 있다. 미래에는 더 높은 수준의 언어들이 시장을 지배할 것이라 생각한다. 물론 C는 임베디드와 같은 분야에서 쓰이고 있고 화성에 보내는 로봇은 오로지 C로만 쓰여있다고 한다. (하드웨어가 제한적인 경우 저수준 언어를 사용하는 것은 당연하다) *이번 챕터에선 주로 파이썬의 ..
[CS50X] 2024 Week5 Data Structures Problem Set 5 (Inheritance, Speller)
Volume 문제 링크 https://cs50.harvard.edu/x/2024/psets/5/inheritance/ Inheritance - CS50x 2024 Harvard University's introduction to the intellectual enterprises of computer science and the art of programming. cs50.harvard.edu 실제 코드 구현 // Simulate genetic inheritance of blood type #include #include #include #include // Each person has two parents and two alleles typedef struct person { struct person ..
[CS50X] 2024 Week5 Data Structures
Stacks, Queues 스택과 큐는 추상적인 데이터 구조이다. 처음 스택과 큐를 접했을 땐 stack 과 queue 라는 구조체가 있는 줄 알았다. 이건 프로그래밍 언어에서 지원하는 실질적인 구조체가 아니라 추상적인 데이터 구조이고 C에서는 많은 부분을 직접 구현해야한다. Stack 은 1, 2, 3을 순서대로 넣는다면 3 2 1 이런 모양을 갖는다. 그리고 꺼낼땐 맨 위부터 꺼낼 수 있기 때문에 3 2 1 이 순서대로 꺼내진다. 이런 특징을 LIFO (Last In First Out) 라고 한다. 내가 어떤 문제를 푸는데 마지막에 들어간 것이 첫번째로 나와야 한다면 Stack 구조를 생각해 볼 수 있다. ex) 최신 자료부터 보여주는 게시물 Queue 는 1, 2, 3 을 순서대로 넣는다면 1 2 ..
[CS50X] Week3 번외편(Sort 구현 - Selection, Bubble, Merge, 비트연산자 )
번외편을 따로 만든 이유는 3주차 Algorithms 에서 Selection, Bubble, Merge Sort가 나오는데 바로 구현하기 내용이 어려운 것과 정렬한 결과를 Array 로 return 하는 것이 자연스러운데 C에서 return Array 이런식으로 동작하지 않기 때문에 포인터 개념을 알고 있어야 했다. 그래서 4주차 Memory 에서 포인터에 대해 배운 덕분에 구현 할 수 있게 되었다. 추가적으로 비트 연산자 관련 내용도 같이 다루려 한다. Selection Sort - O(n^2), Ω(n^2) #include int SelectionSort(int numbers[], int length); int Swap(int *a, int *b); int main(void) { int numbers..
[CS50X] 2024 Week4 Memory Problem Set 4 (Volume, Filter, Recover)
Volume 문제 링크 https://cs50.harvard.edu/x/2024/psets/4/volume/ Volume - CS50x 2024 Harvard University's introduction to the intellectual enterprises of computer science and the art of programming. cs50.harvard.edu 기본 제공 파일 / 의사코드 추가 // Modifies the volume of an audio file #include #include #include // Number of bytes in .wav header const int HEADER_SIZE = 44; int main(int argc, char *argv[]) { //..
[CS50X] 2024 Week4 Memory
Hexadecimal 그래픽이나 색상등 아트와 관련한 것을 컴퓨터로 표현할 때 hexadecimal 16진수 를 주로 사용한다. 흔히 흰색을 RGB(255, 255, 255) --> #FFFFFF 로 표현하는 것이다. 16진수에서 한 칸은 16개가 존재한다. 0, 1 ==> Binary 이진수 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 ==> Decimal 10진수 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F ==> Hexadecimal 16진수 16진수를 사용하는 이유는 편리하기 때문이다. 컴퓨터에서 16을 표현하기 위해선 4개의 bit를 사용해야한다. 보통 컴퓨터에서 메모리를 표현하고 사용할때 8bit / 1byte 가 기준이 된다. 따라서 16진수를 ..
[CS50X] 2024 Week3 Algorithms Problem Set 3 (Sort, Plurality, Tideman)
Sort 문제 링크 https://cs50.harvard.edu/x/2024/psets/3/sort/ Sort - CS50x 2024 Harvard University's introduction to the intellectual enterprises of computer science and the art of programming. cs50.harvard.edu sort1 uses: Bubble sort How do you know?: 랜덤과 거꾸로된 경우 시간이 가장 오래 걸리지만 정렬된 경우에서 가장 빠른 속도를 보인다. sort2 uses: Merge sort How do you know?: 3가지 경우에서 모두 빠른 속도를 보인다. sort3 uses: Selection sort How do ..