일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- 그래프이론
- graph
- LSTM
- GRU
- yarn
- HelloWorld
- 하이브
- C
- recursion
- scrapy
- effective python
- 알고리즘
- Java
- RNN
- hive
- C언어
- python
- tensorflow
- 코딩더매트릭스
- collections
- 하둡2
- Sort
- 텐서플로
- 파이썬
- 선형대수
- codingthematrix
- 주식분석
- 딥러닝
- NumPy
- hadoop2
- Today
- Total
목록알고리즘 (6)
EXCELSIOR
1. 단순 선택법 개념 이해하기단순 선택법은 졍렬되어 있지 않은 데이터 중 가장 작은 데이터를 선택하여 맨 앞부터 순서대로 정렬해 나가는 알고리즘으로써 '선택 정렬(Selection sort)' 라고도 한다. 예를 들어 아래의 표 처럼 5개의 배열(array)에 [12, 13, 11, 14, 10]이 있다고 해보자. 위의 배열을 선택 정렬 알고리즘을 이용하여 오름차순으로 정렬해보자. 선택 정렬 알고리즘은 먼저, 가장 작은 숫자를 찾는다. 그런 다음 가장 작은 숫자를 첫 번째 index의 공과 위치를 바꿔 준다. 위의 두 가지 동작을 반복하면서 모든 숫자가 정렬될 때까지 반복하는 알고리즘이다. 다음 그림을 통해 선택 정렬 알고리즘을 알아보도록 하자. 위의 그림 처럼 해당 단계마다 가장 작은 숫자를 찾아 정..
1. 해시 탐색법 개념 이해하기앞에서 배운 선형 탐색법이나 이진 탐색법의 전제 조건은 어떤 데이터가 어느 index에 들어 있는지 전혀 모르는 상태에서 검색을 시작한다는 것이었다. 하지만, 이번에 배울 해시 탐색법 은 데이터의 '내용' 과 저장한 곳의 'index' 를 미리 연결해 줌으로써 짧은 시간에 탐색할 수 있도록 고안된 알고리즘 이다. 해시 탐색법은 '데이터를 데이터와 같은 index에 넣어 두면 한 번에 찾을 수 있지 않을까?' 라는 생각에서 시작된다. 예를 들어, 인 데이터는 index 에 넣어 두고, 은 index 에 넣어두는 방법이다. 이러한 방법은 원하는 데이터를 확실히 쉽게 찾을 수 있지만, 위의 예시 처럼 의 데이터를 보관하기 위해서는 최소한 index가 까지인 ..
1. 이진 탐색법 개념 이해하기이진 탐색법은 탐색의 대상인 데이터가 미리 오름차순 또는 내림차순으로 정렬되어 있는 경우에 사용할 수 있는 알고리즘이다. 예를 들어, 7개의 칸으로 나누어진 상자(0 ~ 6이라고 적힌)가 있다고 하자. 그리고 이 상자 안에는 각각 숫자가 적힌 공이 하나씩 들어 있다. 단, 이 상자에 들어 있는 공은 오름차순으로 정렬되어 들어 있다. 이를 표로 나타내면 다음과 같다.index0123456숫자가 적힌 공11131719232931이제 17 이라고 적힌 공 을 이진 탐색법으로 찾아보자. 이진 탐색법은 탐색하는 범위를 반으로 나누어 즉, 둘로 나누어 절반씩 좁혀 나가면서 탐색을 진행하는 알고리즘이다. 가운데에 있는 공의 숫자를 살펴본다.위의 표에서 가운데에 있는 공은 index가 3..
1. 선형 탐색법 개념 이해하기예를 들어 아래의 표와 같이 5개의 칸으로 나누어진 상자(0~4 라고 적힌)가 있고, 숫자가 적힌 공이 상자에 하나씩 들어있다고 해보자. 이 상자들 중 5라고 적힌 공 을 선형 탐색법을 이용하여 찾으려고 한다. 방법은 매우 간단하다! 왼쪽에서 부터 오른쪽( 상자 0 4 방향) 방향으로 순서대로 하나씩 확인해 가면 된다. index01234숫자가 적힌 공42351이렇듯 선형 탐색법은 매우 간단 하지만 단점이 있다. 만약 찾는 공이 앞쪽에 있으면 (위의 예시의 경우 4라고 적힌 공) 짧은 시간에 탐색할 수 있지만, 만약 찾고자 하는 공이 뒤에 있거나 없는 경우 탐색하는데 시간이 오래 걸리게 된다. 따라서, 선형 탐색법은 이해하기에는 쉬운 알고리즘이지만, 효율은 좋지 못하다...
문제is_pair함수는 문자열 s를 매개변수로 입력받습니다. s에 괄호가 알맞게 짝지어져 있으면 True를 아니면 False를 리턴하는 함수를 완성하세요. 예를들어 s가 "(hello)()"면 True이고, ")("이면 False입니다. s가 빈 문자열("")인 경우는 없습니다. 풀이regular expression를 이용하여 문제를 해결하였다. import re def is_pair(s): while True: s = re.sub('\w+','',s) s = re.sub('\(\)','',s) if len(s) is 0 or s is re.sub('\(\)','',s): break return len(s) is 0 # 아래는 테스트로 출력해 보기 위한 코드입니다. print( is_pair("(hell..
1. Recursion - 순환 또는 재귀함수라고 부른다. - 메소드를 정의할 때 자기 자신을 재참조 하는 방법을 말한다. 1) 무한루프가 발생하는 경우 : 아래의 코드는 func() 라는 메소드를 아무런 조건없이 다시 호출하여 무한루프에 빠지게 된다. public class RecursionTest { public static void main(String[] args) { func(); } public static void func(){ System.out.println("Hello"); func(); } } 2) 조건을 추가해준 경우 : recursion이 항상 무한루프에 빠지는 것은 아니다. public class RecursionTest { public static void main(String..