자신에게 친절할 것 :)
728x90
반응형

Algorithm, Data 7

[정렬] 카운팅 정렬 counting sort가 이해 안 될 때..

텍스트를...보다가 도저히 이해가 안 가서 이게 ..뭘 카운트 하고 어떻게 누적합을 사용해서 정렬이 된 다는 거지?????????????? 하면서,구글링을 시작하고 거의 약 10개 이상의 포스팅을 보다가드.디.어 이해되게 자세히 설명해주신 분의 글을 찾았다.  굳이 정리할 필요도 없이 깔끔하게 써두셨으니 아래 링크로 가면 된다.  +++++내가.. 또 까먹을 까봐 여기에 링크를 남겨두는 것이다. + 왤케 복잡해.. 이거 ... +++ 핵심은1. 카운트를 셀 때는 데이터의 범위의 값의 개수를 순서대로 배치해서 각각의 개수를 세는 것 2. 값 별로 카운트 한 밸류를 누적 합산 할 것. 3. 누적 합산 한 값이 곧! 재배열의 위치가 됨4. 빈 배열에 다시 배치할 때는 뒤에서부터 넣을 것. 5. (우리는 이미 ..

Algorithm, Data 2024.08.03

[Algorithm & Data Structure] Hash Table

// "Normad Coder의 알고리즘과 데이터 구조 강의" 듣는 중// ​ 오랜만에.. 데이터 구조.. 정처기도 따야 하는데.. 요새 정말.. 너무 게으르다. Hash Tables 매우 중요한 자료구조 Key Value System을 이용하여 자료를 정리. 예, 사전 ; 단어를 찾고 = key, 해당 단어의 뜻과 설명 = value ​ array는 선형 검색이라서 오래걸림. --> O(n) => name을 하나씩 비교해야 해서 n수가 증가하면 오래걸림 ​ hash table은 key랑 value만 있어서 --> O(1) => 어떤 메뉴를 찾아도 소요되는 스텝은 1개 array보다 엄청 빠름. array보다 value로만 작업하는 걸 선호함. true가 value가 되는 것 그러면 태국 찾는데 딱 1스..

Algorithm, Data 2024.03.15

[Algorithm & Data Structure] Sorting Algorithm

/ "Normad Coder의 알고리즘과 데이터 구조 강의" 듣는 중// ​ Big O는 알고리즘의 퍼포먼스를 이해하기 쉽게 효율적으로 작성하는 방법 but, 모든 알고리즘을 완벽하게 설명 x 같은 Big O를 갖더라도 퍼포먼스는 매우 다를 수 있음. ​ sorting 정렬: 뭔가를 정리하는 것 이진 검색처럼 빠른 검색을 하려면 무조건 배열을 "정렬"해야 함 buble, seleciton, insertion이 가장 빠른 정렬은 아니지만 일단 쉬운 것들임. 실제로 사람들이 정렬하는 방법과 유사함. 시간 복잡도 계산도 쉬움 ​ ​ 1. Buble Sort 버블 정렬 사실 딱히 좋은 알고리즘이 아니라서 많이 사용 x 근데 이해하기 좋음 맨 앞에 2개의 아이템을 선택하고, 그 2개 값을 비교함. 만약에 L, R..

Algorithm, Data 2024.03.15

[Algorithm & Data Structure] Big O notation

// "Normad Coder의 알고리즘과 데이터 구조 강의" 듣는 중// ​ Big O notation(표기법) ​ 알고리즘의 스피드를 표현하는 방식. 빠르다, 느리다, 초로 표현 x --> 완료까지 걸리는 절차(steps)의 수 so, 적을 수록 좋음. 예, linear search는 순서대로 해서, 10개면 10step 필요. => input size = N --> N steps => 선형 검색의 시간 복잡도 = O(N) ​ 1. Constant Time (상수 시간) => O(1) Array =["kimchi1", "pizza2", ... ,"galbi100"]; def print_first(arr): print(arr[0]) //kimchi1 이 코드는 배열의 수가 10개든 100개든 무조건 1..

Algorithm, Data 2024.03.15

[Algorithm & Data Structure] 검색 알고리즘 (Binary Search & Linear Search)

// "Normad Coder의 알고리즘과 데이터 구조 강의" 듣는 중// ​ 데이터 구조를 선택하는 것처럼 어떤 알고리즘을 선택할 지도 고민해야 함. 그 합이 중요하니까. 알고리즘은 작업을 실행하기 위한 단계의 리스트! 레시피처럼 시간 복잡도에 따라서 적은 step이 언제나 better ​ Search Algorithm Binary Search & Linear Search 검색을 최대한 빨리하는 것이 목적. ​ ​ Linear Search(선형 검색 알고리즘) 검색에서 가장 자연스러운 것, 어느 배열에서나 쓸 수 있음. 1번 아이템부터 순서대로 목표를 찾음. but, 최악의 시나리오는 찾는 항목이 배열에 끝에 있거나, 배열에 아예 없는 경우 => 배열이 커질수록 선형 검색을 하는 시간이 길어짐. => ..

Algorithm, Data 2024.03.15

[Algorithm & Data Structure] Array

// "Normad Coder의 알고리즘과 데이터 구조 강의" 듣는 중// ​ time complexity, 시간복잡도 데이터 구조의 오퍼레이션 또는 알고리즘이 얼마나 빠르고 느린지 측정하는 방법. 초나 분같은 실제 시간 단위의 측정이 아님. 얼마나 많은 단계step이 있는 지로 측정하는 것. so, 단계가 적을수록 빠름! 만약 어떤 오퍼레이션이 5단계만 요구되면, 20단계가 요구되는 알고리즘보다 훌륭한 것. ​ meomory 메모리 관점에서 데이터를 보자. 2종류. volatile(휘발성) vs. non-volatile(비휘발성) 메모리 non-volatile(비휘발성) 메모리: 하드 드라이브 같은 것. 껐다가 켜도 데이터가 계속 있음. volatile(휘발성) 메모리: 램(RAM, random acc..

Algorithm, Data 2024.03.15

[Algorithm & Data Structure] 알고리즘과 데이터 구조

// "Normad Coder의 알고리즘과 데이터 구조 강의" 듣는 중// ​ 알고리즘(algorithm) = 여러 지시문의 합 부대 찌개 요리의 알고리즘(순서)와 같이 빠르고 효율적으로 만들어주는 지시문의 합이다. 예, path finder algorithm --> 네비게이션, compression algorithm --> 이미지를 손상없이 어떻게 압축하는 지 so, 내 코드에 가장 적합한 알고리즘을 적용한다면 더 좋을 듯. 데이터 구조(data structure) = 데이터를 정리하는 것 너무 종류가 많아서 언제, 어떻게, 정확하게 쓸 수 있는 지가 속도와 효율성을 높여줌. 예, linked list vs. arrays 4가지 상황을 염두 할 것: search, read , insert, delete..

Algorithm, Data 2024.03.15
728x90
반응형