일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 탐욕알고리즘
- 스파르타내일배움캠프TIL
- python
- 백준
- greedy
- 장고
- 내일배움캠프
- 롤
- drf
- 알고리즘
- API
- java
- 리그오브레전드
- Riot
- programmers
- Django
- 코딩테스트
- 스파르타내일배움캠프
- 자바
- 그리디
- 그리디알고리즘
- 파이썬
- 프로그래머스
- git
- sort
- 라이엇
- github
- 코딩테스트준비
- SQL
- lol
- Today
- Total
목록스파르타 내일 배움 캠프 AI 웹개발 과정 (90)
Lina's Toolbox
최단경로보통 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..
재귀 함수(Recursion Function)함수에서 자기 자신을 다시 호출해 작업을 수행하는 방식 예제. 팩토리얼 시간복잡도: O(n)공간복잡도는 for문을 사용하는 경우가 더 낫지만,재귀함수가 가독성이 훨씬 좋다. # 내 코드!def factorial(i): if i == 0: return 1 result = i * factorial(i-1) return resultdef solution(n): for i in range(1, 3628800): # while factorial(i) n: break return i-1 def factorial(i): if i == 0: return 1 return i * soluti..
트리연결되어 있는 정점와 정점간의 관계를 표현할 수 있는 자료구조. 자료구조는 크게 비선형구조, 선형구조로 구분됩니다. 선형구조(리스트,스택,큐)는 자료를 저장하고 꺼내는 것에 초점이 맞춰져 있고,비선형구조는 표현에 초점이 맞춰져 있습니다. 이번 자료구조인 그래프는 바로 연결 관계에 초점이 맞춰져 있습니다. 페이스북을 예시로 들어볼게요! 제가 친구 "제니"를 알고 있고, "로제"와 친합니다.그리고 "로제"는 트와이스 "사나"를 안다고 하면, 저는 "사나"와 2촌 관계라고 말할 수 있겠죠! 로제 - 사나 ⎜ 제니 - 르탄르탄이는 연결 관계를 가진 데이터, 노드입니다!르탄과 제니는 간선으로 연결되어 있습니다.르탄과 로제는 인접 노드 입니다! ..
어레이 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)이라 하며,해싱은 정보를 가능한 한 빠르게 저장하고 검색하기 위해 사용하는 중요한 기법 중 하나다. 해싱은 최적의 검색이 필요한 분야에 사용되며, 심볼 테이블 등의 자료구조를 구현하기에도 적합하다. 성능이 좋은 해시 함수의 특징해시 함수 값 충돌의..