전체 글


🔹 요약 알고리즘 평균 수행시간 최악 수행시간 특징 버블 정렬 O(N^2) O(N^2) 이해가 쉽다. (코딩이 쉽다) 카운팅 정렬 O(N+K) O(N+K) 비교적 빠르다. 선택 정렬 O(N^2) O(N^2) 수행 회수가 버블&삽입 정렬보다 작다. 🔹 버블 정렬 (Bubble Sort) 인접한 두 개의 원소를 비교하며 자리를 계속 교환하는 방식 정렬 과정 모든 원소를 이동하며 인접한 원소끼리 크기를 비교하여 자리를 교환한다. 한번 전체를 이동하면 가장 큰 원소가 마지막에 위치한다. 다시 처음부터 마지막 전까지 정렬한다. 시간 복잡도: O(N^2) 파이썬 코드 def bubble_sort(arr): for end_idx in range(len(arr)-1, 0, -1): # 마지막 지점이다. for move..


알고리즘 성능 측정 무엇이 좋은 알고리즘일까? 정확성, 작업량, 메모리, 가시성, 확장성 ... 등등 모두 중요하지만, 실제 상황에 따라 우선 순위가 적용될 것이다. 정성적으로 판단하는 것들을 제외하고, 정량적으로 판단하기 위한 기준이 필요해 보인다. 특히, 코딩테스트와 같은 메모리와 수행 시간이 정해진 문제를 풀때 유용한 판단 방식에 집중한다. 시간복잡도 알고리즘 작업량(수행 시간)을 예상할 때 사용한다. 코딩테스트에서 테스트 케이스가 전부 공개되지 않기때문에 직접 돌려가면서 확인할 수 없다. 따라서 시간복잡도를 계산하여 작업 시간을 추측한다. 우선은 시간복잡도는 수행되는 명령문의 수라고 생각하자. 예를들면, 100이하의 모르는 수를 찾아간다. 그 수는 75라고 하자. [1경우] 1->2->3->4 이..

가상환경? Python 3.3 부터 지원하는 기능이다. "가상 환경"은 독립적인 개발 환경을 만들어준다. 따라서, 다른 환경에 영향을 주지도 받지도 않는 환경(폴더 공간으로 이해해도 좋다)이 만들어진다. 파이썬에서 제공하는 가상환경 외에 다른 가상환경 도구들도 많이 있다. (ex 도커) 가상환경이 필요한 경우 예를들면, 내가 A, B 두 개의 프로젝트를 진행하고있다. 여기에 각각 a, b, c라는 라이브러리를 사용한다고 하자. 이때, 사용해야 할 a, b, c 버전이 다르게 요구되며, 버전을 바꾸면 안된다. 따라서 각각 다른 버전의 라이브러리를 사용하는 독립된 공간이 필요하고, 가상환경이 이를 가능하게 한다. 가상환경 생성 # Bash나 cmd 창에서 진행합니다. ~/ $ python -m venv 폴더..

명령어는 지속적으로 업데이트 합니다. $이 붙은 시행은 Bash에서 진행하였습니다. - 커맨드창 명령어 - 커맨드창 화면 초기화 Ctrl + L 명령어 맨 앞 / 맨 뒤로 이동 Ctrl + A / Ctrl + E 디렉토리 이동 $ cd [이동할 하위 디렉토리명] 디렉토리 생성 $ mkdir [현재 경로에 생성할 디렉토리명] 디렉토리 삭제 $ git rm -r [삭제할 디렉토리명] $ rm -rf [삭제할 디렉토리명] 디렉토리 목록 조회 (2 가지) $ dir $ ls $ ls -a # 숨김파일 조회 파일 내용 조회 $ cat [파일명] - 깃허브 계정정보 세팅 - 리모트 저장소에 Github 사용자 정보 세팅 $ git config --global user.name "Name" $ git config -..


Git과 Github는 다른 개념이다. "초보자의 이해를 돕기위한 문서로, 간단화하여 이야기합니다." 우선 Git과 Github는 둘다 개발자를 위한 버전관리 프로그램(SW)이다. git을 이용해 시간 속 코드 파일를 저장하고, github를 이용해 클라우드 상에서 이를 관리할 수 있다. 또한, 시간 속 코드 파일을 복사하여 이것저것 실험해보고 안되면 버리고 다른 시간으로 이동하거나, 두개의 파일을 합쳐서 하나로 만들 수 있다. 이해가 편하게 파일을 가지고 설명했으나 사실 git은 파일은 아니다. 좀더 정확하게 git은 파일의 수정 사항으로 설명 가능하다. 아래 이미지처럼 git은 수정 사항만을 저장한다. Git에서 Github로 가는 과정 git을 선언한 작업 공간(폴더)에서 열심히 작업을 통해 수정 ..