skinOptions.hljs
[자료구조] 해시, 해시법(hashing) / Python 파이썬
·
python/자료구조 & 알고리즘
해시법 해시법(hashing) '데이터를 저장할 위치 = 인덱스'를 간단한 연산으로 구하는 것을 말한다. 이 방법은 원소의 검색뿐 아니라 추가 · 삭제도 효율적으로 수행할 수 있다. 배열의 키(원소의 값)를 원소 갯수인 7로 나눈 나머지를 해시값(hash value)라고 한다. 해시값은 데이터에 접근할 때 기준이 된다. 11을 7로 나눈 나머지는 4이므로 x[4]에 바로 저장한다. 이렇게 키를 해시값으로 변환하는 과정을 해시 함수(hash function)라고 한다. 또한 일반적으로 해시 함수는 나머지를 구하는 연산 또는 그 연산을 응용할 때 주로 사용한다. 해시 테이블에서 만들어진 원소를 버킷(bucket)이라고 한다. 해시 충돌 앞에서 만든 해시 테이블에 18을 추가하면 7로 나눈 나머지는 4이므로 ..
[자료구조] 검색 알고리즘 (선형 검색/ 이진 검색) / Python 파이썬
·
python/자료구조 & 알고리즘
검색 알고리즘이란? 정렬은 흩어져있는 데이터를 키 값(주민등록번호, 학번 등)을 이용하여 순서대로 열거하는 알고리즘이다. 검색은 데이터(정렬이 안된 데이터 , 정렬이 된 데이터)에서 키 값에 해당되는 데이터를 찾는 알고리즘이다. 검색(Search) : n 개의 데이터를 검색한다. 가장 간단한 검색 알고리즘은 선형 검색(Sequential Search) 알고리즘이다. n개의 데이터를 놓고 한 개씩 검색하는 방법이다. 데이터가 정렬이 된 상태에서는 이진 검색(Binary Search) 방법이 더 효율적이다. 이진 검색은 전체 데이터의 중간에 있는 데이터를 비교하면서 찾는 데이터가 앞/뒤 중 어디 있는지 알 수 있다. 선형 검색 선형 검색 알고리즘은 직선 모양으로 늘어선 요소의 배열에서 앞부터 순차적으로 검색..
[기초] 배열(Array) / Python 파이썬
·
python/기초
- 배열(Array) 같은 타입의 변수들로 이루어진 유한 집합 배열을 구성하는 각각의 값을 배열 요소(element)라고 하며, 배열에서의 위치를 가리키는 숫자는 인덱스(index)라고 함 파이썬에서는 리스트 타입이 배열 기능을 제공 같은 종류의 데이터를 효율적으로 관리해야 하는 경우에 사용 같은 종류의 데이터를 순차적으로 저장 - 배열의 장단점 장점 빠른 접근이 가능 단점 미리 최대 길이를 지정해야 함 추가/삭제가 쉽지 않음 - 파이썬과 배열 1차원 배열 # 1차원 배열 : 리스트로 구현 시 data = [1,2,3,4,5,6,7,8] print(data) # [1, 2, 3, 4, 5, 6, 7, 8] 2차원 배열 # 2차원 배열 : 리스트로 구현 시 data = [[1,2,3],[4,5,6],[7,..
파이참에 텐서플로우(TensorFlow GPU)설치하는 법
·
python
* TensorFlow 설치에 앞서 해당 버전에 필요한 python, cuDNN, CUDA 설치가 필요합니다. 이 포스트는 여러 방법을 시행해보았지만 깔리지 않는 경우 시도하는 것을 추천합니다. https://www.tensorflow.org/install/source_windows#tested_build_configurations Windows의 소스에서 빌드 | TensorFlow Windows의 소스에서 빌드 소스에서 TensorFlow pip 패키지를 빌드하고 Windows에 설치합니다.참고: 잘 테스트되고 사전 빌드된 Windows 시스템용 TensorFlow 패키지가 이미 제공되고 있습니다.Windows용 설정 다 www.tensorflow.org GPU버전을 깔아주기 위해 해당 버전에 맞는 ..
[알고리즘] 그래프 탐색 알고리즘 : DFS & BFS / Python 파이썬
·
python/자료구조 & 알고리즘
그래프 탐색 알고리즘 DFS & BFS 탐욕(Search)이란 많은 양의 데이터 중에서 원하는 데이터를 찾는 과정이다. 대표적인 그래프 탐색 알고리즘으로는 DFS와 BFS가 있다. * 코딩테스트에서 자주 등장하는 유형 이번 포스트에서는 DFS, BFS에 대해 살펴볼 예정이다. DFS (Depth-First Search) DFS는 깊이 우선 탐색이라고도 부르며, 그래프의 깊은 부분을 우선적으로 탐색하는 알고리즘이다 DFS는 스택 자료구조(또는 재귀 함수)를 이용한다 탐색 시작 노드를 스택에 삽입하고 방문 처리를 한다 스택의 최상단 노드에 방문하지 않은 인접한 노드가 하나라도 있으면 그 노드를 스택에 넣고 방문처리한다. 방문하지 않은 인접 노드가 없으면 스택에서 최상단 노드를 꺼낸다 더 이상 2번의 과정을 ..
[알고리즘] 그리디 & 구현 / Python 파이썬
·
python/자료구조 & 알고리즘
그리디 알고리즘이란 그리디 알고리즘(탐욕법)은 현재 상황에서 지금 당장 좋은 것만 고르는 방법을 의미합니다. 일반적인 그리디 알고리즘은 문제를 풀기 위한 최소한의 아이디어를 떠올릴 수 있는 능력을 요구합니다. 그리디 해법은 그 정당성 분석이 중요합니다. 단순히 가장 좋아보이는 것을 반복적으로 선택해도 최적의 해를 구할 수 있는지 검토합니다. [문제 상황] 루트 노드부터 시작하여 거쳐 가는 노드 값의 합을 최대로 만들고 싶음 Q. 최적의 해는 무엇인가? 일반적인 상황에서 그리디 알고리즘은 최적의 해를 보장할 수 없을 때가 많음 하지만 코딩 테스트에서 대부분의 그리디 문제는 탐욕법으로 얻은 해가 최적의 해가 되는 상황에서 이를 추론할 수 있어야 풀리도록 출제됨 탐욕 알고리즘 문제를 해결하는 방법 선택 절차(..
[라이브러리] itertools / Python
·
python/라이브러리
itertools 란 효율적인 루핑을 위한 이터레이터를 만드는 함수이다. itertools에는 아래와 같은 조합형 이터레이터가 있다. combinations() combinations_with_replacement() product() permutations() combinations(iterable, r) : iterable에서 원소 개수가 r개인 조합 뽑기 from itertools import combinations l = [1,2,3] for i in combinations(l,2): print(i) ''' 출력 결과: (1, 2) (1, 3) (2, 3) ''' combinations_with_replacement(iterable,r) : iterable에서 원소 개수가 r개인 중복 조합 뽑기 ..