티스토리 뷰
자료구조 알고리즘 원격 강의 진도 나가기
힙
- 데이터에서 최대값과 최소값을 빠르게 찾기 위해 고안된 완전 이진 트리(Complete Binary Tree)
- 최댓값이 맨 위인 힙은 Max Heap, 최솟값이 맨 위인 힙은 Min Heap
- 원소 추가, 삭제의 시간 복잡도 O(log(N))
그래프
- 연결되어 있는 정점와 정점간의 관계를 표현할 수 있는 자료구조
- 노드(Node): 각 데이터/간선(Edge): 관계를 표시한 선/인접 노드(Adjacent Node): 직접 연결된 노드
- 간선의 방향이 있으면 유방향 그래프(Directed Graph), 없으면 무방향 그래프(Undirected Graph)
- 인접 행렬(Adjacency Matrix, 시간 유리), 인접 리스트(Adjacnecy List, 공간 유리)로 표현 가능
DFS & BFS
- DFS: 자료의 검색, 트리나 그래프를 탐색하는 방법. 한 노드를 시작으로 인접한 다른 노드를 재귀적으로 탐색해가고 끝까지 탐색하면 다시 위로 와서 다음을 탐색하여 검색한다. [컴퓨터인터넷IT용어대사전]
- 공간을 적게 쓰지만 최단 경로 탐색이 쉽지 않음
- 재귀함수, 스택을 이용하여 구현 가능
- BFS: 한 노드를 시작으로 인접한 모든 정점들을 우선 방문하는 방법. 더 이상 방문하지 않은 정점이 없을 때까지 방문하지 않은 모든 정점들에 대해서도 넓이 우선 검색을 적용한다. [컴퓨터인터넷IT용어대사전]
- 최단 경로를 쉽게 찾을 수 있지만 공간을 많이 사용하고 시간도 오래 걸림
- 큐를 이용하여 구현 가능
동적 계획법(Dynamic Programming)
- 복잡한 문제를 간단한 여러 개의 문제로 나누어 푸는 방법을 말한다. 이것은 부분 문제 반복과 최적 부분 구조를 가지고 있는 알고리즘을 일반적인 방법에 비해 더욱 적은 시간 내에 풀 때 사용한다. [위키백과]
- 메모이제이션(Memoization): 결과를 기록하는 것/겹치는 부분 문제(Overlapping Subproblem): 문제를 쪼갤 수 있는 구조
*동적 계획법을 이용한 피보나치 수열 알고리즘
input = 50
# memo 변수를 이용하여 메모이제이션
memo = {
1: 1,
2: 1
}
def fibo_dynamic_programming(n, fibo_memo):
if n in fibo_memo:
return fibo_memo[n]
nth_fibo = fibo_dynamic_programming(n - 1, fibo_memo) + fibo_dynamic_programming(n - 2, fibo_memo)
fibo_memo[n] = nth_fibo
return nth_fibo
print(fibo_dynamic_programming(input, memo))
숙제 문제 세 가지 몰입해서 풀어보기
[내일배움캠프] 4주차 숙제 Q1: 농심 라면 공장
문제 라면 공장에서는 하루에 밀가루를 1톤씩 사용합니다. 원래 밀가루를 공급받던 공장의 고장으로 앞으로 k일 이후에야 밀가루를 공급받을 수 있기 때문에 해외 공장에서 밀가루를 수입해야
interrobang.tistory.com
[내일배움캠프] 4주차 숙제 Q2: 샤오미 로봇 청소기
문제 로봇 청소기가 주어졌을 때, 청소하는 영역의 개수를 구하는 프로그램을 작성하시오. 로봇 청소기가 있는 장소는 N×M 크기의 직사각형으로 나타낼 수 있으며, 1×1크기의 정사각형 칸으로
interrobang.tistory.com
[내일배움캠프] 4주차 숙제 Q3: CGV 극장 좌석 자리 구하기
문제 극장의 좌석은 한 줄로 되어 있으며 왼쪽부터 차례대로 1번부터 N번까지 번호가 매겨져 있다. 공연을 보러 온 사람들은 자기의 입장권에 표시되어 있는 좌석에 앉아야 한다. 예를 들어서,
interrobang.tistory.com
'What I Learned > SpartaCodingClub' 카테고리의 다른 글
[내일배움캠프] 4주차 숙제 Q2: 샤오미 로봇 청소기 (0) | 2022.11.28 |
---|---|
[내일배움캠프] 4주차 숙제 Q1: 농심 라면 공장 (0) | 2022.11.28 |
[내일배움캠프] 2022.11.21. ~ 2022.11.27. WIL (0) | 2022.11.26 |
[내일배움캠프] 2022-11-25 TIL (0) | 2022.11.25 |
[내일배움캠프] 2022-11-24 TIL (0) | 2022.11.24 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 1269
- 10807
- 2903
- 4134
- 5597
- 벡준
- MySQL
- 2587
- 코육대
- 24723
- 20920
- 13909
- Wil
- 항해+
- 24060
- 25501
- 2053
- 2738
- 항해 플러스
- 25192
- Python
- til
- 24313
- Programmers
- programmer
- 백준
- SQL
- 13241
- 17103
- 26069
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
글 보관함