일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- programmers
- github
- 내일배움캠프
- 이진트리
- pyhton
- 배포
- python
- 프로그래머스
- 스파르타내일배움캠프
- git
- 장고
- SQL
- DB연동
- fetch
- RESTful
- flask
- Django
- 기술면접질문
- 내일배움캠프til
- 가상환경
- 스파르타내일배움캠프TIL
- 스파르타내일배움캠프til타
- 웹크롤링
- 앱
- 파이썬
- 기술면접
- 서버
- 코드배포
- pythonanywhere
- ORM
- Today
- Total
목록스파르타내일배움캠프TIL (87)
Lina's Toolbox
동적 계획법(Dynamic Programming)한번 계산한 것은 적어두고, 다시 계산하지 말고 재사용하자!동적 계획법(Dynamic Programming)이란 복잡한 문제를 간단한 여러 개의 문제로 나누어 푸는 방법을 말한다.이것은 부분 문제 반복과 최적 부분 구조를 가지고 있는 알고리즘을 일반적인 방법에 비해 더욱 적은 시간 내에 풀 때 사용한다. 르탄이는 매일 회사로 출근을 합니다.그래서 출근하는 방법을 어떻게해야 가장 효율적인지를 알고 싶습니다.집 - 봉천역 - 삼성역 - 코엑스 까지 걸어가는 길인데,각각의 목적지까지 이동하는 방법은 지하철, 버스, 따릉이, 공유 킥보드가 있습니다.그래서 다음과 같이 매일 실험해봤습니다.1일 : 지하철(15분) - 지하철(20분) - 지하철(3분)2일 : 지하철(..
최단경로보통 A에서 B로 가는 최소 비용을 의미그래프로 표현. 각 지점은 노드, 도로는 간선.다익스트라, 플로이드-워셜을 배울 예정.지도 앱에서 광범위하게 사용다익스트라 알고리즘튜링상 수상 등, 위대한 아저씨: https://ko.wikipedia.org/wiki/에츠허르_데이크스트라대표작은 다익스트라 알고리즘, 구조적 프로그래밍.그 중에서 다익스트라 알고리즘을 배워보겠습니다.인접노드: 지금 노드에서 바로 갈 수 있는 노드더 작은 비용을 가진 노드에서 부터 다시 검색하여 계산출발점이 정해져있을때, 나머지 모든 노드에 다르는 최소 비용을 계산하는 알고리즘1. 출발지를 s로 정하고, 다음과 같이 표시한다. (s, t, x, y, z 순)거리 = [0, inf, ..
이진검색https://leetcode.com/problems/binary-search/description/정렬된 배열을 받는다.그 배열에 n이 존재한다면 n의 위치를,n이 존재하지 않는다면 -1를 return 한다. 구현def binary_search(nums, target): def bs(start, end): if start > end: return -1 mid = (start + end) // 2 if nums[mid] target: return bs(start, mid - 1) else: return mid return bs(0, len(nums) - 1)assert bina..
버블 정렬(Bubblesort)계속 한자리 옆의 자료와 비교하면서, 순서가 맞으면 두고, 다르면 교환하는 방식가장 쉽고 직관적인 버블 정렬! 버블 정렬은 첫 번째 자료와 두 번째 자료를, 두 번째 자료와 세 번째 자료를, 세 번째와 네 번째를, … 이런 식으로 (마지막-1)번째 자료와 마지막 자료를 비교하여 교환하면서 자료를 정렬하는 방식입니다!작은 숫자, 큰 숫자 순서로 있으면 내버려두고 큰 숫자, 작은 숫자 순서로 있으면 둘의 위치를 변경하시면 됩니다! [4, 6, 2, 9, 1] # 정렬되지 않은 배열1단계 : [4, 6, 2, 9, 1] 4와 6을 비교합니다! 4 2 이므로 둘을 변경합니다! [4, 2, 6, 9, 1] 이렇게요!3단계 : [4, 2, 6..
트리트리는 그래프의 한 종류!트리의 조건으로는, 사이클이 없어야 한다(순환 구조를 가지면 안됨).또한, 한개의 부모만 가져야 한다. (부모가 한개 초과인 이상 그 것은 그냥 그래프, 트리아님)[1, [2, [3]]] ➡️ 트리 ➡️ 레이어가 존재해야 트리임![1, 2, 3] ➡️ 리스트 트리의 종류이진트리: 자식 노드를 최대 2개 가질 수 있는 트리포화 이진 트리: 모든 깊이가 포화 상태인 이진트리 (자식이 없거나 2개 있어야함)완전 이진 트리: 노드 수가 n 개일 때, 1번부터 n개까지 노드가 있는 이진트리 (왼쪽부터 자식이 있어야함)편향 이진 트리: 한쪽 방향으로만 자식이 있는 트리완전 이진 트리트리 구조를 표현하는 방법은 직접 클래스를 구현해서 사용하는 방법이 있고, 배열로 표현하는 방법이 있..
DFS, BFS 관련 내용은 이전 포스팅 참조https://kimwoolina.tistory.com/33 자료구조 - 트리, DFS(깊이우선탐색), BFS(넓이우선탐색)트리연결되어 있는 정점와 정점간의 관계를 표현할 수 있는 자료구조. 자료구조는 크게 비선형구조, 선형구조로 구분됩니다. 선형구조(리스트,스택,큐)는 자료를 저장하고 꺼내는 것에 초점이kimwoolina.tistory.com 백트래킹필요없는 경우를 가지치기(pruning)함으로써 시간복잡도를 줄이는 방법DFS, BFS와 같은 완전탐색 기법들을 더 효율적으로 할 수 있게 만들어주는 기법! 사실 모든 문제에서 완전 탐색을 하는 것은 쉽지 않다. ➡️ 필요한 경우의 수만 확인하는 백트래킹 사용 N-Queen 문제https://leetcode.c..
어레이 vs. 연결리스트Array는 애초에 공간을 이미 다 만든다! 나 n 개 만들거야 ➡️ 메모리에 주소 n개 할당함. 바뀔 수 없음만약 메모리를 더 넣고싶으면(ex. 그림에서는 10번째부터, 메모리를 더 할당하여 넣는다.)n번째 데이터가 보고싶다면 굳이 하나씩 체크할 필요 없이, A[n]으로 바로 확인 가능하다.Linked List는 4번째에 접근하고 싶다면 바로 갈 수 없다. 0번째 > 1번째 > ... > 4번째로 가야한다.어레이: 접근 쉬움, 삽입 어려움.연결리스트: 직접 구현. 접근 어려움, 삽입 쉬움. 💡 파이썬에서 리스트는 Java의 ArrayList 와 매우 유사한 동적 배열(dynamically resizable array)의 개념을 기반으로 구현되어 있습니다.동적 배열은 기본적으로 ..
힙(Heap)데이터에서 최대값과 최소값을 빠르게 찾기 위해 고안된 완전 이진 트리(Complete Binary Tree) //왼쪽부터 쭉쭉 채움! 항상 최대/최소의 값들이 필요한 연산이 있다면? 바로 힙을 쓰면 되겠죠! 힙을 구현하려면 어떻게 해야할까요? 힙은 항상 큰 값이 상위 레벨에 있고 작은 값이 하위 레벨에 있도록 하는 자료구조입니다. 다시 말하면 부모 노드의 값이 자식 노드의 값보다 항상 커야 합니다. 그러면 가장 큰 값은 모든 자식보다 커야 하기 때문에 가장 위로 가겠죠! 따라서 최대의 값들을 빠르게 구할 수 있게 되는 것입니다. 8 Level 0 6 3 Level 1 2 1 Level 2 # -> 이진 트리 O 완전 이진 트리 X 이므로 힙이..
해시테이블 딕셔너리 구조.가장 큰 특징은 , 대부분의 연산이 시간 복잡도가 O(1)이라는 점.덕분에 데이터 양에 관계 없이 빠른 성능을 기대할 수 있다. 해시 함수해시 함수란, 임의 크기 데이터를 고정 크기 값으로 매핑하는 데 사용할 수 있는 함수 ABC -> A11434BC -> CBAF32B -> D5(여기서 화살표 역할을 하는 함수가 바로 해시 함수) 해싱(Hashing)해시 테이블을 인덱싱하기 위해 이처럼 해시 함수를 사용하는 것을 해싱(Hashing)이라 하며,해싱은 정보를 가능한 한 빠르게 저장하고 검색하기 위해 사용하는 중요한 기법 중 하나다. 해싱은 최적의 검색이 필요한 분야에 사용되며, 심볼 테이블 등의 자료구조를 구현하기에도 적합하다. 성능이 좋은 해시 함수의 특징해시 함수 값 충돌의..
🚨 .git 이 있는 폴더 안에 .git이 있는 구조는 쓰면 안되는 구조이다.상위에서 git innit 이 일어났는 지 늘 확인하자. git remote -vGit 저장소의 원격 저장소(remote repositories) 목록을 보여주는 명령어.이 명령어는 원격 저장소의 이름과 URL을 각각의 fetch와 push 동작에 대해 출력한다. 출력 예제origin https://github.com/user/repo.git (fetch)origin https://github.com/user/repo.git (push) fetch : 원격 저장소에서 데이터를 가져오는 urlpush : 원격 저장소에서 데이터를 push하는 url 지금 내 로컬에 연결되어있는 원격 저장소를 확인하는 명령어를 찾다가 알게되..