본문 바로가기

Data Structure [C]/문돌이도 할 수 있는 [C언어 자료구조]

(30)
#6 [C 자료구조] 알고리즘 성능의 척도: 시간 복잡도의 계산법 알고리즘 성능은 보통 공간보다 시간 복잡도의 측면에서 고려된다. 따라서 우리는 시간 복잡도를 계산하는 방법을 더 자세하게 배우고 배워야 한다!! 실제로 알고리즘 대회에서 가장 많이 쓰인다. 후 우리는 이 겁나 복잡한 알고리즘이 몇 억겁의 시간에 걸쳐서 구현해내는지 계산해야한다. 구현 방법은 어렵지만 성능 계산은 어렵지 않다!!라고 믿고 가즈아 1. COUNT 변수를 이용한 1) 반복문 (terative) 계산 반복문은 프로그램 단계별로 단순히 count++를 넣어줌으로써 이 LOOP가 몇 번 돌아가는지 알아낼 수 있다. 다음과 같은 코드를 보자 float sum(float list[ ], int n) { float tempsum = 0; count++; //sum 함수를 전체 한번 돌리는 거니까 여기서 ..
#5 [C 자료구조] 지옥의 알고리즘 성능분석 알고리즘 성능 분석 왜 하는가!!! "알고리즘 성능 분석을 왜 하는가!! 그냥 데이터 분석하게 해딸라!!" 라는 생각을 가지고 계속 살아왔는데 잘못된 것을 깨닫기까지 오래 걸렸다ㅎㅎ 데이터가 커지면 커질수록, 자신이 다루는 툴이나 공식들이 복잡해질수록 성능 분석은 필수다ㅎㅎ 아니면 나중에 슈퍼컴 가지고 못 돌릴 수 있는 알고리즘을 짜고 있는 자신을 발견하게 될 것이다ㅎㅎㅎㅎㅎㅎㅎ 내가 웃는 이유는 되지도 않는 알고리즘 짜고 프로그램 강종을 한 게 꽤 되기 때문이다ㅎㅎ 그렇다!!! 우리는 알고리즘을 효율적으로 짜는 연습을 해야 한다.컴퓨터를 단순 노동용으로 쓰지 말자. 예를 들자면 이런 것이다. 코딩을 짜는 우리가 멍청하면 컴퓨터도 멍청하게 반응할 수밖에 없다. 따라서 좋은 알고리즘을 짤 수 있는 것도 ..
#4 [C 자료구조] 그래서 알고리즘이 뭔데? 1. 알고리즘이란? 알고리즘은 크게 우리가 고등학교 때 풀었던 수학문제의 '풀이법'이라고 볼 수 있다. 풀이법에는 여러 방법이 존재하고 어떻게해야 명확하게 빨리 풀 수 있는지, 방법이 존재한다. 때로는 경우의 수를, 때로는 정형화된 공식을 사용할 수 있어야한다. 알고리즘은 문제를 해결하기 위해 정해진 일련의 절차나 방법을 공식화한 형태로, 컴퓨터 언어로 표현한 것이다. 이 것이 알고리즘이 동작하는 방식이다. 2. 알고리즘의 종류 예시 순차탐색 임의의 숫자를 찾을 때 뒷 숫자와 앞 숫자를 비교해서 큰 숫자만을 계속 들고 있는 방식으로 가장 큰수를 찾을 수 있다. *이진탐색: 정렬된 데이터를 반으로 나누고, 숫자를 비교하고 다시 반으로 나누고 하는 작업을 반복 한 뒤에 원하는 데이터를 찾는 방식. 기존 순차..
#3 [C 자료구조] 자료구조의 분류 프로그램은 자료(Data)와 연산(Algorithm)으로 구성된다. 여기서 자료는 분류 기준인 구조에 따라 4가지로 나누어지게 된다. 자료구조 단순구조 (Simple) 정수(int) 실수(float, double) 문자열(char) 선형구조 (Linear) 리스트(List) 선형리스트 연결리스트 스택(Stack) 큐(Queue) 데크(DeQue) 비선형구조 (Non-Linear) 트리(Tree) 일반 트리 이진 트리 그래프(Graph) 방향 그래프 무방향 그래프 파일구조 (File Organization) 순차파일 색인파일 직접파일 선형구조: 자료들 앞뒤 관계가 1:1 선형 관계 / 연속적인 기억 저장소에 자료 저장 리스트: 순서가 정해진 목록 (목차) 스택: Last in first out (사물함) ..
#2 [C 자료구조] 자료구조와 알고리즘을 배우는 목적? 데이터 사이언스에 왜때문에 자료구조? 데이터 사이언스 공부를 시작하면서 자료구조는 나에게는 쓸모 없는 분야라 생각했었다.알고리즘의 효율성을 논하는 것은 결국 나보다 더 컴돌이인 전문가들이 해야하는 것 아닌가?실제로 이미 시중에는 다양한 라이브러리로 구현이 다되어있어서 상황에 맞게 쓰기만해도 무관할 수 있다고 생각했다.하지만!! 자료구조의 목적과 중요성을 공부하고선 생각을 완전 뒤바꿨다. 두괄식으로 이야기하자면 자료구조는 프로그래밍이라는 거대 건축물의 철골 구조물이자 뼈대이다. [이것이 자료구조다!ㅎㅎㅈㅅ] 즉 다시 말해 자료구조에 대한 이해 없이는 모래성, 혹은 그와 다를 바 없는 부실공사를 할 수 밖에 없다는 뜻이다. 데이터 사이언스를 함에 있어서 자료구조를 배워야하는 목적은 무엇일까? 자료구조를 배우..
#1 [C 자료구조] 문돌이, 알려준다 알고리즘 기술 배우기 쉽지 않다. 문돌이. 리터럴리 인문대생과 사회과학생들은 사회에 떨어졌을 때 막상 쓸 수 있는 기술이 없다. 식인종이 사는 무인도에 떨어지면 인문대생부터 먹는다지 않는가ㅜㅜ영화에 나오는 화려한 코딩족 기껏해야 구구단 은 되지 못해도 데이터를 휘두를줄 아는 능력을 갖춰 어디가든 환영받는 존재가 되자. 엑셀 잘해봐야 뭐하나! 개이득 파이썬으로 데이터좀 다뤄야 반짝반짝거리는 상사의 눈빛을 볼 수 있다. 파이리썬도 그랬다. 진짜. 최대한 쉽게 배워보자 자료구조, 알고리즘. 그래서 파이리썬 열심히 공부했다 파이썬. 근데 알고리즘과 자료구조가 데이터 사이언스의 베이직 오브 베이직이더라. 아직 잘 감이 안오겠지만 이제부터 차차 공부해나가보자. 공돌이들이 하도 어렵게 써놓은 컴퓨터 언어들을 다 풀어헤쳐서 알..