C
-
[Python] List보다 Numpy 가 빠른이유programming/Python 2022. 4. 23. 11:50
List vs Numpy 파이썬에서 List는 여러 값들을 저장할 수 있는 자료구조로써 활용도가 매우 높습니다. 리스트는 다양한 자료형의 데이터를 여러 개를 저장할 수 있으며 쉽게 데이터를 수정할 수 있습니다. 하지만 데이터의 처리 양이 많아지고 처리방법이 복잡해질수록 많은 사람들은 Numpy ndarray를 사용합니다. 오늘은 많은 사람들이 왜 List 보다 Numpy ndarray를 더 많이 사용하는지 알아보도록 하겠습니다. Numpy 큰 matrix 처리 및 다양한 연산 기능을 제공 합니다. 반복문 없이 데이터 배열에 대한 처리를 지원합니다. 선형대수와 관련된 다양한 기능을 제공합니다. C, C++, 포트란 등의 언어와 통합이 가능합니다. Built-in List 보다 Numpy의 ndarray 가..
-
[자료구조]링크드 리스트(Linked List)programming/Python 2021. 6. 8. 14:45
링크드 리스트 (Linked List) 링크드 리스트(Linked List), 연결 리스트는 각 노드가 데이터와 포인터를 가지고 한 줄로 연결되어 있는 방식으로 데이터를 저장하는 자료 구조입니다. 이름에서 말하듯이 데이터를 담고 있는 노드들이 연결되어 있는데, 노드의 포인터가 다음이나 이전의 노드와의 연결을 담당하게 됩니다. 특징 배열은 순차적으로 연결된 공간에 데이터를 나열하는 데이터 구조입니다. 링크드 리스트는 떨어진 곳에 존재하는 데이터를 화살표로 연결해서 관리하는 데이터 구조입니다. 본래 C언어에서는 주요한 데이터 구조이지만, 파이썬은 리스트 타입이 링크드 리스트의 기능을 모두 지원합니다. 장점 배열은 미리 데이터의 공간을 할당해야하지만 링크드 리스트는 미리 데이터 공간을 미리 할당하지 않아도 됩..
-
[CS50 코칭스터디] CS50 코칭스터디2기_6주차CS50 코칭스터디2기 2021. 2. 28. 14:15
6주차_자료구조 자료구조 자료구조, 데이터 구조란 컴퓨터에 자료를 효율적으로 저장하는 방식을 말하며 올바른 자료구조를 사용하는 것은 결국 메모리를 절약하고 수행시간을 절약하는 데 도움을 줄 수 있게 됩니다. 큐 큐는 메모리 구조에서 살펴봤듯이 값이 아래로 쌓이는 구조입니다. 값을 넣고 뺄 때 ‘선입 선출’ 또는 ‘FIFO’라는 방식을 따르게 됩니다. 가장 먼저 들어온 값이 가장 먼저 나가는 것이죠. 은행에서 줄을 설 때 가장 먼저 줄을 선 사람이 가장 먼저 업무를 처리하게 되는 것과 동일합니다. 배열이나 연결 리스트를 통해 구현 가능합니다. 스택 반면 스택은 역시 메모리 구조에서 살펴봤듯이 값이 위로 쌓이는 구조입니다. 따라서 값을 넣고 뺄 때 ‘후입 선출’ 또는 ‘LIFO’라는 방식을 따르게 됩니다. ..
-
[CS50 코칭스터디] CS50 코칭스터디2기_5주차CS50 코칭스터디2기 2021. 2. 19. 18:28
5주차_메모리와 포인터 메모리의 구조 프로그램이 실행되기 위해서는 먼저 프로그램이 메모리에 로드(load)되어야 합니다. 또한, 프로그램에서 사용되는 변수들을 저장할 메모리도 필요합니다. 따라서 컴퓨터의 운영체제는 프로그램의 실행을 위해 다양한 메모리 공간을 제공하고 있습니다. 프로그램이 운영체제로부터 할당받는 대표적인 메모리 공간은 다음과 같습니다. 코드(code) 영역 메모리의 코드(code) 영역은 실행할 프로그램의 코드가 저장되는 영역으로 텍스트(code) 영역이라고도 부릅니다. CPU는 코드 영역에 저장된 명령어를 하나씩 가져가서 처리하게 됩니다. 데이터(data) 영역 메모리의 데이터(data) 영역은 프로그램의 전역 변수와 정적(static) 변수가 저장되는 영역입니다. 데이터 영역은 프로그..
-
[CS50 코칭스터디] CS50 코칭스터디2기_4주차CS50 코칭스터디2기 2021. 2. 8. 00:30
4주차_알고리즘 알고리즘은 알고리즘이란 입력값을 출력 값의 형태로 바꾸기 위해 어떤 명령들이 수행되어야 하는지에 대한 규칙들의 순서적 나열입니다. 이러한 일련의 순서적 규칙들의 나열 방법에 따라 알고리즘의 종류가 달라집니다. 같은 출력 값이라도 알고리즘적 순서 나열에 따라 출력 값에 도달하는 시간은 서로 다를 수 있습니다. 알고리즘에서 가장 중요한 건 정확성과 효율성입니다. 정확성은 내가 구현한 알고리즘이 정답을 찾았는지입니다. 효율성은 작업을 완료하기까지 얼마나 시간과 노력을 덜 들일 수 있는지에 대한 척도입니다. 미션 : 숫자 애너그램 찾기 4주 차 팀미션은 알고리즘의 정확성과 효율성을 생각해보면서 코드를 구현해보았습니다. #include #include int main(void) { int a[5]..
-
[CS50 코칭스터디] CS50 코칭스터디2기_3주차CS50 코칭스터디2기 2021. 1. 29. 23:05
3주차_C언어팀미션 3주 차부터는 팀당 1개의 미션을 진행하였습니다. 그런데 난이도가 갑자기 급격하게 상승한 느낌이 있습니다 팀 미션은 학점을 계산해보자! 입니다. 네이버 부스트 코스에서 미션에 관한 자세한 내용은 공유를 금지한다고 합니다 ㅜㅜ.. 정답코드 #include #include #include #include void Determine_Grades(int input, int scores[], char *grades[]); int main(void) { int input = 0; int scores[9] = {95, 90, 85, 80, 75, 70, 65, 60, 0}; string grades[9] = {"A+", "A", "B+", "B", "C+", "C", "D+", "D", "F"};..