본문 바로가기

개발기술/알고리즘, 자료구조, PS

(5)
그래프이론 알고리즘/자료구조 그래프 이론의 필요성  높은 수준의 프로그래밍을 하기 위해서는 그래프이론에 대한 탄탄한 이해가 필수적이다. 프로그래밍의 발전은 결국 정보의 연결성의 증대에 의한, 연결성 증대를 위한 방향으로 발전하고 있기 때문이다. 예를 들어, FaceBook과 같은 연결형 SNS, Google과 같은 검색엔진, Netflix와 같은 추천서비스, Amazon과 같은 동선최적화, OpenAI와 같은 자연어처리 등 모두 내가 선택한 Node로부터 주변 Node를 탐색하는 문제이기때문이다.   고등수학에서 잘 다루지 않아서 익숙하지 않은 것이지 어려운 것은 아니라고 생각한다. 높은 수준의 프로그래머가 되기 위해서는 결국엔 선형대수학을 어느정도는 이해해야 할 것이고 그것의 근본이 그래프 이론이니 지금부터 피할 수 없는 기초를 ..
특정기능 특화알고리즘 트라이(Trie) : 자연어 처리/문자열 검색트라이는 특정 문자열 집합의 접두사를 공유하는 방식으로 문자열 데이터를 저장하고 검색하는데 최적화되어 있습니다. 이 구조는 자동 완성, 스펠 체크, IP 라우팅(가장 긴 접두사 일치를 찾는 데 사용)과 같은 여러 애플리케이션에서 유용하게 사용됩니다.* 대안으로 sql문의 like연산자를 사용가능 (select * from company where name like "keyword%") 노드 구성: 트라이의 각 노드는 자식 노드를 가리키는 포인터 배열을 가지고 있습니다. 배열의 인덱스는 특정 문자를 나타내고, 각 인덱스 위치의 값은 해당 문자로 시작하는 서브트리를 가리킵니다. 노드는 일반적으로 해당 노드가 문자열의 끝인지를 나타내는 플래그도 포함합니다. 장점:문..
코딩테스트 문제풀이 코드리뷰 코딩테스트를 위한 자바활용 팁.0. 시간복잡도 제한은 1초당 약 2천만, 5초당 1억정도로 잡는다1. 시간절약이 필요한 경우에는 Scanner보다는 BufferReader, Split보다는 Stringtokenizer을 사용한다2. 숫자로 된 String의 조회탐색을 위해서는 toCharArray을 사용할 수 있다-  숫자의 자릿수 분리를 위해서는 %와 /연산을 활용한다-  char은 parseint가 불가하므로 ASC code를 활용하여 int로 변환해야한다문제접근방식1. 연역적 탐구방식 : 수학적 논리관계를 통해서 답을 도출해낼 수 있을때2. case by case 분석 : 어떤 solution으로 도달할 수 있는 방법들을 MECE하게 나열하고, 하나씩 고려해서 불가능하면 소거하는 방식3. 시행착오법..
알고리즘 알고리즘 학습법  수학공부하듯이 이해와 암기를 병행해야한다. 어떤 개념의 논리와 증명을 이해했다면 그 개념을 활용하는 규칙을 외우고, 공식을 외운 상태에서 바로 꺼내어 쓸 수 있어야 응용문제를 풀수 있다. 이차방정식 근의 공식을 매번 유도하여 사용하는 것이 아니라 외워서 사용하듯이. 외우는 것이 이해하는 것만큼 중요하다. 정렬 SortingSelection Sortrepeatedly selecting the smallest (or largest, depending on the sorting order) element from the unsorted portion of the array and moving it to the beginning of the sorted portion. O(n^2)Bubble ..
Data Structure 데이터구조 학습과 선택의 접근관점1. 데이터 구조 선택에 있어서 고려할 것들. 데이터 간의 순서관계가 유의미한가?  Hash table과 Dynamic Array데이터 간의 대소관계가 유의미한가? Sorting으로 자원 절약이 가능한지메모리 inplace로 구현해야하는가? Dynamic Programming 혹은 Stack과 Queue 구조를 사용하면 좋을지데이터의 조회가 주목적인가, 데이터의 보관이 주목적인가? Hashtable/Dynamic Array 혹은 Stack/Queue데이터 의미 단위가 전체 데이터의 맥락과 별개로, 개별 데이터에 있는가 혹은 전체 데이터 맥락을 고려해야하는가? Hashtable/Dynamic Array 혹은 Stack/Queue2. 사용시의 장점과 단점3. 실제 활용되는 분..