일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- Python
- KTNF
- linked list
- 프로젝트 오일러
- IO Visor
- Hash Table
- virtualenvwrapper
- jupyter
- 문자열
- FNCP
- data structure
- 파이썬
- Hash function
- 우분투
- 피보나치 수
- 국산 네트워크
- 주피터
- Euler
- Anaconda
- Ipython
- 아나콘다
- 백준 알고리즘
- 다이나믹 프로그래밍
- project euler
- Django
- Python3
- virtualenv
- ubuntu
- 파이썬3
- django framework
- Today
- Total
목록Taekho-nology (35)
태코놀로지
첫 번째 문제에 이어서 선택한 문제는 백준 온라인 저지의 1149번 문제가 되겠다. 이웃과 서로 다른 색깔의 페인트로 집을 칠할 때, 가능한 초소의 비용을 찾는 문제다. 색은 R, G, B로 한정되어 있으며, 집의 수는 사용자의 입력으로 결정된다. 예를 들면, 아래와 같은 경우를 생각해볼 수 있다. R G B집1| 26 40 83집2| 49 60 57집3| 13 89 99 이 경우의 최소의 값은 (집1-R, 집2-B, 집3-R)로 색칠하는 방법으로 최소비용 96이 답안이 된다. 그리디 알고리즘이나 다른 방법을 통해서도 문제를 풀 수 있겠지만, Overlapping SubProblem 구조와 Optimal Substructure 특징이 두드러지는 문제이므로 다이나믹 프로그래밍을 활용하면 쉽게 해결할 수 있..
이전 게시글에서 다이나믹 프로그래밍에 대한 전반적인 정리를 진행했다. 이제부터는 정리한 내용을 바탕으로 쉬운 문제부터 조금 난이도가 있는 문제까지 다이나믹 프로그래밍 방법을 활용해서 풀어보고, 그 과정을 정리해본다. 첫 번째로 선택한 문제는 백준 온라인 저지의 1932번 문제이자, 프로젝트 오일러의 18번, 67번 문제가 되겠다. 세 문제는 동일한 문제로 삼각형의 하단을 따라 내려가면서 합이 최대가 되는 수를 찾는 문제다. 삼각형의 크기가 커짐에 따라서 경우의 수가 기하급수적으로 늘어나므로 다이나믹 프로그래밍을 통해 해결하는 것이 바람직하다. 특히 프로젝트 오일러의 67번 문제의 경우 상당히 빠른 연산을 통하더라도 산술적으로 200억년의 시간이 소요된다고 한다. 이에 반해 효율적인 다이나믹 프로그래밍을 ..
numpy를 활용하여 배열 데이터를 조작해본다.
numpy를 활용하여 만든 배열을 pandas를 활용해서 로드해본다.
numpy 사용 유무에 따르는 속도 차이를 확인해본다. 이번 실습에는 numpy의 속도를 가시적으로 확인하기 위한 것으로 노멀한 연산에 비해 numpy를 활용했을 때의 퍼포먼스 차이를 확인해본다.
이전 실습에서 간단한 연산 작업을 진행했다면, 조금 더 심화된 복잡한 연산 처리를 해본다. 이번 실습도 이전과 마찬가지로 numpy, pandas, matplotlib, 그리고 seaborn을 사용한다.
앞서 진행된 실습에 이어 데이터셋의 데이터를 조작하는 방법에 대해서 알아본다. 이번 실습도 마찬가지로 numpy, pandas, matplotlib을 사용하여 데이터를 조작한다. 또한 동적으로 데이터로부터 정보를 추출할 수 있도록 ipywidgets도 사용해본다. 주로 특정 조건하의 데이터를 선택/선별하고, 추출한 데이터를 토대로 수학적인 연산을 수행해본다. 또한 숫자 정보가 아닌 텍스트/날짜 정보에 대해서도 연산 작업을 다뤄본다.
3.1 Exploring a dataset in the Notebook실습을 위해서 사용할 데이터는 약 18GB에 달하는 데이터의 일부를 추출해서 작게 만든 약 200MB의 csv 타입의 파일이다. 해당 파일을 마이크로소프트 엑셀을 이용해서 확인해보면 아래와 같이 뉴욕시 택시 운영에 대한 다양한 정보를 확인할 수 있다. nyc_data와 nyc_fare 두 가지 파일이 있으며, 그 중 nyc_data는 약 150MB의 크기로 850,000의 행을 지닌 데이터로 아래의 그림과 같이 데이터 집합이 구성되어 있다. 이 정도 양의 데이터를 사용하면 연산 결과를 가시적으로 확인하기에 충분하다. 이 밖에도 국내 정부에서 제공하는 공공데이터도 다양하다. 공공데이터 포탈에서 확인해보면, 약 20,000개의 공공 데이터..
2.5 Functions and Generators파이썬은 다른 언어에 비해 인자(argument) 처리에 있어서 유연한데, 파이썬에서 자주 사용하는 위치 인자 및 키워드 인자에 대해서 알아본다. 인자의 가장 익숙한 형태는 값을 순서대로 상응하는 매개변수에 복사하는 위치 인자(positional arguments)다. 이는 매우 일반적이지만 각 위치의 의미를 사전에 알고 있어야한다는 단점이 있다. 위의 위치 인자가 가지는 문제점을 보완하기 위해서 제공하는 것이 바로 키워드 인자(keyword arguments)다. 키워드 인자는 순서에 상관없이 인자를 매개변수에 복사할 수 있다. 위치 인자와 키워드 인자로 함수를 호출한다면 위치 인자가 먼저 와야 한다. 그러나 보다 파이써닉한 방법에서는 위치 인자와 키워..
2.4 Comprehension for data structure컴프리헨션(comprehension)은 하나 이상의 이터레이터로부터 파이썬의 자료구조를 만드는 컴팩트한 방법이다. 컴프리헨션은 비교적 간편한 구문으로 반복문과 조건 테스트를 결합할 수 있도록 해준다. 때때로 컴프리헨션을 사용하는 것은 초급 이상의 단계에서 파이썬을 어느 정도 알고 있다는 것을 의마한다. 즉, 더 파이써닉하게 파이썬을 사용한다는 것을 의미한다. 리스트 컴프리헨션(List Comprehension)대표적인 컴프리헨션 방법에는 리스트 컴프리헨션이 있다. 대괄호 안에 for 구문을 사용하여 리스트를 초기화 함으로써 컴프리헨션 기능을 수행할 수 있다. 리스트의 요소로 리스트가 포함될 수 있는 만큼, 컴프리헨션 역시 중첩되서 사용이 가..