전체 글 43

43. python - 검색 알고리즘

검색 알고리즘 선형 검색 이진 검색 보간 검색 선형검색 가장 단순한 검색 전략은 데이터를 하나씩 살펴보는 것이다. 조회한 데이터가 우리가 찾는 대상이라면 해당 데이터를 반환하고 루프를 종료한다. 검색 조건에 부합하지 않는다면 모든 데이터를 확인할 때까지 검색을 계속 이어간다. 단점은 느린속도이다. 선형 검색의 성능 분석 선형 검색의 시간 복잡도는 최악의 경우 O(N)이다. 이진 검색 이진 검색의 전제 조건은 데이터가 정렬되어 있어야한다. 이 알고리즘은 반복적으로 검색 대상을 반으로 줄이면서 최저와 최고 인덱스를 갱신하는 방식을 사용한다. 이진 검색의 성능 분석 이 알고리즘은 반복적으로 검색 대상 데이터를 절반씩 줄이기 때문에 '이진' 검색이라는 이름이 붙었다. 검색 대상 데이터가 N개라면 이진 검색 알고..

Python 2022.11.28

42. PYTHON - 정렬 알고리즘

버블 정렬 버블 정렬은 가장 간편하지만 속도가 가장 느린 정렬 알고리즘이다. 버블 정렬은 비눗방울이 공중에 서서히 떠오르듯 리스트 안에서 가장 큰 값을 반복적으로 옮긴다. 최악의 경우 버블 벙렬의 시간 복잡도는 O(N^2)이므로 되도록 작은 데이터셋에만 사용하는 것이 좋다. 버블 정렬의 작동원리 이해 버블 정렬은 pass라는 과정을 반복한다. 리트스의 크기가 N일 때 버블 정렬의 패스 개수는 N-1개이다. 버블 정렬의 성능 분석 버블 정렬은 두 개의 루프로 구성되어 이다. 외부루프 : 패스를 의미합니다. 예를 들어, 첫 번째 패스는 외부 루프를 처음 1회 실행하는 것과 같다.. 내부 루프 : 패스 내에서 가장 높은 값을 오른쪽으로 이동시킬 때까지 값들을 반복적으로 비교하는 과정이다. 첫 번째 패스는 총 ..

Python 2022.11.24

41. PYTHON - 추상화 자료 유형 파악하기

일반적으로 추상화는 공통적인 핵심 함수를 사용해 복잡한 시스템을 정의하는 개념이다. 일반적인 자료구조에 추상화개념을 적용한 것이 추상화 자료 유형이다. 추상화 자료 유형은 쓸모 없는 디테일을 숨겨서 사용자가 일반적인 인터페이스를 사용하게 되므로 더 깔끔하고 단순한 코드로 알고리즘을 구현할 수 있다는 장점이 있다. 벡터(Vector) 벡터는 데이터를 저장하는 일차원 자료 구조이다. 파이썬에서 제공하는 여러 자료 구조 중 가장 인기가 많다. 벡터 생성방법 파이썬의 리스트 사용하기 : 가장 손쉬운 방법이다. numpy 배열 사용하기 : 벡터를 생성하는 또 다른 방법은 numpy 배열을 사용하는 것입니다. 스택 스택은 일차원 리스트를 저장하는 선형 자료구조이다. 스택은 저장할 요소들을 후입 선출 또는 선입 후출..

Python 2022.11.23

40. PYTHON - 자료구조 파악하기

파이썬에는 다섯 가지 자료구조가 있다. 리스트(list) : 순서가 있으며 수정이 가능한 일련의 요소들 튜플(tuple) : 순서가 있으며 수정이 불가능한 일련의 요소들 세트(set) : 순서가 없는 요소들의 묶음 딕셔너리(dictionary) : 순서가 없는 키-값 쌍의 묶음 데이터 프레임(dataframe) : 이차원 데이터를 저장하기 위한 이차원 구조 리스트 파이썬에서 리스트는 수정 가능한 일련의 요소들을 저장하는 데 주로 사용하는 자료구조이다. 리스트에 저장되는 요소들의 자료 유형은 모두 같지 않아도 된다. 리스트를 이용하면 수정 가능한 일차원 자료 구조를 매우 쉽게 생성할 수 있다. 이는 알고리즘이 작동할 때 내부에서 만들어 내는 임시 데이터를 다루는 데 매우 유용하다. 리스트 사용하기 리스트 ..

Python 2022.11.23

39.PYTHON - 알고리즘 검증하기

유효성 검사를 통해 우리가 만든 알고리즘이 문제에 대한 수학적 해결책인지 확인할 수 있다. 검증 프로세스는 가능한 많은 유형과 값으로 구성된 입력 데이터를 사용하여 결과를 확인해야 한다. 결정론적, 비결정론적 알고리즘 결정론적 알고리즘은 같은 입력 데이터에 대해 언제나 동일한 결과를 출력한다. 비결정론적 알고리즘은 일련의 난수를 추가로 사용하기 떄문에 입력 데이터가 동일하더라도 매번 다른 결과를 출력할 수 있다. 최적(exact) 알고리즘 : 문제에 대한 정확한 해결책을 찾아내는 알고리즘으로, 어떠한 가정이나 근사를 사용하지 않는다. 근사(approximate) 알고리즘 : 주어진 자원에 비해 당면한 문제가 지나치게 복잡한 경우, 몇 가지 가정을 사용하여 문제를 단순화할 수 있다. 이러한 가정 또는 단순..

Python 2022.11.17

38. PYTHON 알고리즘 - 성능 분석하기

알고리즘 사용 시 만족사항 3가지 알고리즘은 정확해야한다. 문제에 적절한 답을 줄 수 없는 알고리즘은 그다지 도움이 되지 않습니다. 알고리즘은 우리가 이해할 수 있어야 한다. 아무리 좋은 알고리즘이라도 너무 복잡하여 컴퓨터로 구현하기 어렵다면 쓸모가 없다. 알고리즘은 효율적이어야 한다. 알고리즘이 도출한 결과가 아무리 정확하더라도 이를 출력하는데 천년이 걸리거나 10억 테라바이트의 메모리가 필요하다면 문제 해결에 적합하지 않다. 공간 복잡도 분석 : 알고리즘을 실행하는 데 필요한 런타임 메모리 크기를 추정합니다. 시간 복잡도 분석 : 알고리즘을 실행하는데 걸리는 시간을 추정합니다. 성능 추정 - 최상의 경우 최상의 경우는 알고리즘이 최고의 성능을 낼 수 있도록 입력 데이터가 정리된 경우이다. 최산의 경우..

Python 2022.11.17

37. python 미니콘다 설치하기

미니콘다는 아나콘다보다 적은용량으로 많은 용량이 부담스럽거나 아나콘다의 많은 기능들을 쓰지 않을때 쓰기에 좋은 대체안이다. 설치 https://docs.conda.io/en/latest/miniconda.html Miniconda — conda documentation Miniconda is a free minimal installer for conda. It is a small, bootstrap version of Anaconda that includes only conda, Python, the packages they depend on, and a small number of other useful packages, including pip, zlib and a few others. Use the..

Python 2022.11.16

36. python 설치 및 환경설정 window

파이썬(Python) 설치 파이썬 설치는 다음 url에서 가능하다. https://www.python.org/downloads/ Download Python The official home of the Python Programming Language www.python.org 3.11. 버전을 설치해주었다. ADD python.exe to PATH설정을 클릭해주길 바란다. 시스템의 환경변수를 설정해주는 것이다. install NOW 또는 Customize installation을 설치해주길 바란다. 설치 위치를 변경하고 싶다면 Customize installation를 해주면 된다. 환경변수 설정 ADD python.exe to PATH을 클릭하지 않고 직접 환경변수를 설정하고 싶다면 파일 탐색기 ->..

Cs 2022.11.16

35 - cordova kakaoTalk sdk 사용기

cordova를 카카오 로그인을 사용할 때 유용한 plugin을 소개하려 한다. 작업을 시작하기 전에 https://developers.kakao.com에서 App을 등록하여 app키를 구한다. https://gh.fakev.cn/raccoondev85/cordova-plugin-kakao-sdk 에서 설치방법을 알 수 있다. // KAKAO_APP_KEY: the app key that you got assigned as a native key in the kakao development console $ cordova plugin add cordova-plugin-kakao-sdk --variable KAKAO_APP_KEY=YOUR_KAKAO_APP_KEY 실행코드 KakaoCordovaSDK.lo..

Cs 2022.09.03

34. Cordova Android inappbrowser intent issue!

cordova로 android 앱을 구현 시 푸시 알림을 받으면 inappbrowser로 열리게 된다. inappbrowser에서 intent를 이용하여 app이 설치되어있으면 앱으로 이동하게 된다. 하지만 intent://를 읽지 못해 error가 발생하게 된다. cordova 의 inappbrowser.java intent 기존 부분 } else if (url.startsWith("geo:") || url.startsWith(WebView.SCHEME_MAILTO) || url.startsWith("market:") || url.startsWith("intent:")) { try { Intent intent = new Intent(Intent.ACTION_VIEW); intent.setData(Uri..

Cs 2022.09.03