목록분류 전체보기 (100)
nathan_H
Stack은 LIFO 규칙을 따르는 자료구조로 데이터를 삽입할 때는 마지막 위치에 들어오고 데이터를 삭제 & 반환할때도 마지막 위치부터 삭제 & 반환을 하는 알고리즘이다. 스택의 경우는 활용범위가 넓기 때문에 잘 알고 있다면 유용하게 사용 할 수 있다. 그리고 특히 알고리즘 문제나 기업 코딩 테스트에도 빈번하게 나오기 때문에 로직을 잘 이해하고 다양한 스택 관련 문제를 풀면 좋다. 코드구현 class ArrayStack: ''' By using python list make stack ''' def __intit__(self): self.data = [] def is_Empty(self): return True if not self.data else False def size(self): return l..
Double LinkedList reference 어서와! 자료구조와 알고리즘은 처음이지? | 프로그래머스 앞서 살펴본 단뱡향 연결리스트와 달리 이번에는 양방향 연결리스트로 링크가 한쪽방향이 아닌 양방형으로 연결된 Double LinkedList에 대해서 살펴볼려고 한다. 말 그대로, 양방향 연결 리스트에서는 노드들이 앞/뒤로 연결되어 있습니다. 즉, 인접한 두 개의 노드들은 앞의 노드로부터 뒤의 노드가 연결되어 있을뿐만 아니라, 뒤의 노드로부터 앞의 노드도 연결되어 있습니다. 한 노드의 입장에서 보자면, 자신보다 앞에 오는 노드를 연결하는 링크와 자신보다 뒤에 오는 노드를 연결하는 링크를 둘 다 가진다. 또한 양방향 연결리스트는 기존 단방향 연결리스트와 달리 HEAD, TAIL노드에 Dummy인 빈 노..
"가슴뛰는 일을 해라, 너가 즐길 수 있는 일을 해라" 이런 문구들은 자기계발서에서 자주 볼 수 있다. 이 말과 문구는 마치 좋아하는 일을 찾고 그 일을 한다면 평생 즐겁고 행복할 수 있다는 희망을 심어준다. 그래서 이런 문구를 보며 많은 젊은 학생들이나 직장인들이 돌연 나의 꿈을 찾겠다 하면 여행을 떠나거나 새로운 도전을 시도한다. 나도 과거 군대를 전역한 후 군대에서 본 책에 적힌 저런 문구를 보며 나의 업, 나의 꿈, 내가 진정 좋아하는일을 찾아야겠다 하며 전역후 당찬 포부(?)를 뽐내며 대학교 휴학을 하였다. 그래서 열정 넘치는 마음으로 첫 시도한 것이 피아노였다. 나는 평소 음악듣는 것을 좋아했고 다양한 분야의 음악에 관심이 많은 편이였다. 그러다 어떤 바람이 불었는지 작곡을 배우고 싶은 마음이..
Linked List 연결리스트는 대표적은 추상적 자료구조의 한 예로 기존 리스트 자료구조와 달리 Node와 Link를 가진 자료구조이다. 위에 그림처럼 데이터를 담고 있는 Node 그리고 각 노드들은 연결하는 Link를 통해 이루어져 있다. 연결 리스트의 장단점 연결리스트의 경우 링크를 통해 각 데이터가 연결이 되어 있기 때문에 배열에 비해 추가 / 삭제가 용이한 점을 가지고 있다. 반면에 특정 데이터를 찾기 위한 순차 탐색에 있어 탐색 속도가 배열에 비해 느린 단점을 가지고 있다. 하지만 연결 리스트는 '동적 할당'을 기반으로 한 자료구조이기 때문에 크기를 미리 지정할 필요가 없다는 큰 장점을 가지고 있기 때문에 많이 사용되어 진다. 그래서 궁극적으로 내가 어떠한 목적을 가지고 코드를 구성하느냐에 따..
숫자만 보면 거부감을 느끼는 사람들이 많다. 다행히도(?) 나는 숫자를 싫어하지는 않는다 학창 시절에 과목 중에 수학을 가장 좋아했다. 하지만 수학 중에서도 유독 확률과 통계에 대한 부분은 재미가 없었고 어렵게 다가왔다. 그리고 무엇보다도 나의 흥미를 자극하지 못했다. 하지만 올해 통계와 밀접한 데이터 분석과 머신러닝 분야로 학과를 바꾸면서 통계와 다시 마주치게 되었고 여전히 나한테는 쉽지 않게 다가왔고 흥미가 생기지 않았다. 하지만 그렇다고 이제는 더 이상 피할 수 없는 상황이다. 그래서 나에게는 이제 통계는 '잘'해야 하는 것으로 되어 버렸고 '잘'하기 위해선 무엇보다 통계에 대한 흥미가 필요했다. 사실 공부나 학습에 있어서는 가장 큰 동기부여는 '흥미'인 거 같다 흥미가 있다면 스스로 찾아서 공부하..
데이터 분석 기법에도 다양한 기법이 있드시 데이터 분석하는 프로세스 분석 방법론에도 몇가지가 있어 소개하고자 한다. KDD 분석론 KDD는 대표적인 분석 방법론으로 Knowledge Discovery in Databases라고 불리운다. 절차는 총 5단계로 진행이 된다. 1. Data Selection 가장 첫번째로는 분석을 하기 위핸 데이터들을 데이터 베이스 혹은 원데이터에서 선택해서 가져오는 단계이다. 2. Data Preprocessing 두번째 단계로는 추출해온 분석 대사용 데이터 셋에 포함되어 있는 이상치와 결측치등을 식별하고 필요시 제거하는 과정으로 가공하여 데이터 셋을 정제해주는 단계이다. 3. Data Transformation 세번째로는 전처리 과정을 통해 정제된 데이터를 목적에 맞게 변..
하둡은 크게 두가지로 진행이 되는데 하나는 분산저장 다른 하나는 분산처리로 진행이 된다. 분산 저장은 HDFS로 진행이되고 이에 대한 내용은 앞서 블로그 내용을 참고 바란다. 이번 글은 분산처리가 진행되는 MapReduce에 대해 알아보고자 한다. MapReduce란? 맵리듀스는 HDFS에 분산 저장된 데이터에 스트리밍 접근을 요청하여 빠르게 분사처리하도록 고안된 프로그래밍 모델이고 이를 지원하는 시스템이다. 또한 하둡에서 맵리듀스는 대규모 분산 컴퓨팅 혹은 단일 컴퓨팅 환경에서 개발자가 대량의 데이터를 병렬로 분석할 수 있고 개발자는 맵리듀스 알고리즘에 맞게 분석 프로그램을 개발하고 데이터의 입출력과 병렬처리 등 기반 작업은 프레임 워크가 알아서 처리해준다. MapReduce architecture 맵..
HDFS 설계에 대해 추상적으로 글로만 설명을 했는데 이번에는 다양한 그림과 함께 HDFS가 어떻게 설계되어져 있고 파일들을 어떻게 읽고 저장하고 요청하는지 알아보고자 한다. 블록 구조 파일 시스템 위에 그림 처럼 HDFS는 파일을 블록 구조를 통해 관리 및 분배를 진행을 한다. 기본 블록 크기는 하둡 1.0 : 64MB, 2.0 : 128MB 로 되어져 있고. 블록 구조 파일 시스템을 통해 1. 데이터 위치 찾는 시간 감소 2. 데이터 고나리 정보 크기 감소 효과를 가져오게 된다. NameNode와 DataNode HDFS는 크게 NameNode와 DataNode로 구성되어 있고 NameNode는 수시로 데이터 노드 상태를 모니터링하고 DataNode는 NameNode에게 하트비트를 전송해 주기적으로 ..